JavaScript数组API总结

简介: JavaScript数组API总结

本文 首先对数组常用方法进行分类,具体使用方法会在分类后整理。

一 分类:


1.修改原数组


pop()、push()、reverse()、shift()、unshift()、sort()、splice()、splite() …

2.不会修改原数组的


concat()、join()、slice()、filter() 、reduce() …

3.es6新增的如map()、find()、findIndex()、filter()、every()、some ()会不会改变原数组???

1、用forEach、map函数对引用类型的数组元素的属性值进行了修改,原数组也会跟着改变。即可能是数组、对象、函数(函数是引用类型)。


forEach里的回调函数对引用类型的数组元素的属性有修改操作。他们的特点大多需遍历数组


2、如果你不希望原数组在上述情况下被改变的解决办法:

   对操作数组进行深拷贝。用拷贝的对象调用数组处理方法,原数组就不会改变了。

image.png

二 详细介绍


1.删除数组末尾的元素  pop()

1. var last = fruits.pop(); // remove Orange (from the end)
2. // last: "Orange"; fruits: ["Apple", "Banana"];

2删除数组最前面(头部)的元素  shift()

1. var first = fruits.shift(); // remove Apple from the front
2. // first: "Apple"; fruits: ["Banana"];

3 添加元素到数组的末尾  push()

1. var newLength = fruits.push('Orange');
2. // newLength:3; fruits: ["Apple", "Banana", "Orange"]

4添加元素到数组的头部

1. var newLength = fruits.unshift('Strawberry') // add to the front
2. // ["Strawberry", "Banana"];

5 forEach() 遍历数组

// 遍历:forEach
    let arr = ['张飞', '关羽', '赵云', '张辽', '曹仁', '许褚'];
    // ECMAScript5:forEach
    // arr.forEach( function (item, index, o) {
    //  // 第一个参数:item,代表当前项
    //  // 第二个参数:index,代表当前项索引值
    //  // 第三个参数:o,代表当前数组本身
    //  console.log( item, index, o );
    // } );

6  find:遍历查找,返回第一个满足条件的元素

// find:遍历查找,返回第一个满足条件的元素
    // let re = [6, 2, 7, 4, 5, 9].find( function (item, index, o) {
    //  // console.log( item, index, o );
    //  return item > 6;
    // } );
    // console.log( re );

7 findIndex:遍历查找,返回第一个满足条件的元素的索引值

// findIndex:遍历查找,返回第一个满足条件的元素的索引值
    // let re = [6, 2, 7, 4, 5, 9].findIndex( function (item, index) {
    //  return item > 6;
    // } );
    // console.log( re );

8 some:遍历查找,如果有满足条件有一个就会返回true,否则就是false

// some:遍历查找,如果有满足条件有一个就会返回true,否则就是false
    // let re = [6, 2, 7, 4, 5, 9].some( function (item, index) {
    //  return item > 6;
    // } );
    // console.log( re );
// array.some() - 检查数组中是否有元素满足条件。某一元素为true,则为true,否则返回false
// 用于检测数组中是否有满足条件的元素。
// some如果遇到 true 就不再执行了。如果都为 false 返回false。不会改变原数组。
// some 英语翻译为一些,所以some方法 只要其中一个为true 就会返回true的。some:一真即真
let result1 = users.some(item => item.age > 20);
console.info(result1); // true

9 every:遍历查找,每个元素都满足条件则返回true,否则就是false

// every:遍历查找,每个元素都满足条件则返回true,否则就是false
    // let re = [6, 2, 7, 4, 5, 9].every( function (item, index) {
    //  return item > 6;
    // } );
    // console.log( re );
// array.every() - 检查数组中是否所有元素都满足条件。某一个为false,则返回false,否则返回true
// 用于检测数组中所有元素是否都满足该条件。
// every如果遇到 false 就不在执行了。如果都为 true 返回true。不会改变原数组。
// every 英语翻译为所有,所以every方法 必须所有都返回true才会返回true,哪怕有一个false,就会返回false。every:一假即假
let result2 = users.every(item => item.age > 20);
console.info(result2); // false

10 filter:遍历筛选,筛选出满足条件的元素返回新的数组

// filter:遍历筛选,筛选出满足条件的元素返回新的数组
    // let re = [6, 2, 7, 4, 5, 9].filter( function (item, index) {
    //  return item > 6;
    // } );
    // console.log( re );

11  map:遍历数组,让每个元素执行一边回调函数把所有结果放到新数组返回

// map:遍历数组,让每个元素执行一边回调函数把所有结果放到新数组返回
    let re = [6, 2, 7, 4, 5, 9].map( function (item, index) {
      return item * item;
    } );
    console.log( re );
// array.map() - 对数组中的每一个元素进行操作。返回每一个元素执行后的结果
// 用于处理数组中的数据。产生新数组,不会改变原数组。foreach这是对原有数组进行操作,没有返回值。
// map()方法创建了一个新数组,但新数组并不是在遍历完array1后才被赋值的,而是每遍历一次就得到一个值。
// forEach适合于你并不打算改变数据的时候,而只是想用数据做一些事情 – 比如存入数据库或则打印出来。
// map()适用于你要改变数据值的时候。不仅仅在于它更快,而且返回一个新的数组。这样的优点在于你可以使用复合(composition)(map(), filter(), reduce()等组合使用)来玩出更多的花样。

12  sort:数组排序

  // sort:数组排序
    // let arr = [23, 66, 123, 33, 7, 46];
    // console.log( arr.sort() );
    // let re = arr.sort( function (a, b) { return a - b; } );// 从小到大排序
    // console.log( re );
    // console.log( arr.sort( function (a, b) { return b - a; }) );

13 reverse:翻转数组顺序

1. //  reverse:翻转数组顺序
2.    // let arr = ['a', 'b', 'c'];

14  join:用指定内容连接数组成为字符串

// join:用指定内容连接数组成为字符串
    // let arr = ['张三', '李四', '尼古拉斯'];
    // let re = arr.join('');

15 indexOf:查找首次出现的索引位置,找不到就会返回-1

     lastIndexOf:查找尾次出现的索引位置,找不到就是-1

  let arr = ['a', 'b', 'c', 'd', 'a', 'b', 'c'];
    // 查找数组中是否具有c
    // indexOf:查找首次出现的索引位置,找不到就会返回-1
    // let re = arr.indexOf('m');
    // lastIndexOf:查找尾次出现的索引位置,找不到就是-1
    // let re = arr.lastIndexOf('m');

16  concat:拼接数组

// concat:拼接数组
    let re = arr.concat([1, 2, 3], ['11', 22, 33], 'aa', 'bb', 'cc');
    console.log( re )

17 Array.from();:把伪数组转换为真数组

// Array.from();:把伪数组转换为真数组
    // 注意:要想使用这个方法,那么伪数组必须有length,否则转换不了
    // let o = {
    //  0 : 'aa',
    //  1 : 'bb',
    //  2 : 'cc',
    //  3 : 'dd',
    //  length : 4
    // }
    // // 把伪数组转换为真数组
    // let arr = Array.from(o);
    // console.log(arr);

18   reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

array.reduce(function(prev, current, currentIndex, arr), initialValue)
prev:函数传进来的初始值或上一次回调的返回值
current:数组中当前处理的元素值
currentIndex:当前元素索引
arr:当前元素所属的数组本身
initialValue:传给函数的初始值
       const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
       const sum = arr.reduce(function (prev, current) {
         return prev+current
       }, 0)
       console.log(sum) //55

19  slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。

stringObject.slice(start,end)
String 对象的方法 slice()、substring() 和 substr() (不建议使用)都可返回字符串的指定部分。slice() 比 substring() 要灵活一些,因为它允许使用负数作为参数。slice() 与 substr() 有所不同,因为它用两个字符的位置来指定子串,而 substr() 则用字符位置和长度来指定子串。
还要注意的是,String.slice() 与 Array.slice() 相似。

image.png

相关文章
|
25天前
|
JSON 缓存 JavaScript
深入浅出:使用Node.js构建RESTful API
在这个数字时代,API已成为软件开发的基石之一。本文旨在引导初学者通过Node.js和Express框架快速搭建一个功能完备的RESTful API。我们将从零开始,逐步深入,不仅涉及代码编写,还包括设计原则、最佳实践及调试技巧。无论你是初探后端开发,还是希望扩展你的技术栈,这篇文章都将是你的理想指南。
|
18天前
|
JSON JavaScript 前端开发
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发作为连接用户与数据的桥梁,扮演着至关重要的角色。本文将引导您步入Node.js的奇妙世界,通过实践操作,掌握如何使用这一强大的JavaScript运行时环境构建高效、可扩展的RESTful API。我们将一同探索Express框架的使用,学习如何设计API端点,处理数据请求,并实现身份验证机制,最终部署我们的成果到云服务器上。无论您是初学者还是有一定基础的开发者,这篇文章都将为您打开一扇通往后端开发深层知识的大门。
35 12
|
25天前
|
JavaScript NoSQL API
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发如同一座灯塔,指引着数据的海洋。本文将带你航行在Node.js的海域,探索如何从一张白纸到完成一个功能完备的RESTful API。我们将一起学习如何搭建开发环境、设计API结构、处理数据请求与响应,以及实现数据库交互。准备好了吗?启航吧!
|
26天前
|
JavaScript 前端开发 API
Vue.js 3:探索组合式API带来的新变革
Vue.js 3:探索组合式API带来的新变革
|
26天前
|
JavaScript 前端开发 API
Vue.js 3中的Composition API:提升你的组件开发体验
Vue.js 3中的Composition API:提升你的组件开发体验
|
1月前
|
JSON JavaScript API
深入浅出Node.js:从零开始构建RESTful API
【10月更文挑战第39天】 在数字化时代的浪潮中,API(应用程序编程接口)已成为连接不同软件应用的桥梁。本文将带领读者从零基础出发,逐步深入Node.js的世界,最终实现一个功能完备的RESTful API。通过实践,我们将探索如何利用Node.js的异步特性和强大的生态系统来构建高效、可扩展的服务。准备好迎接代码和概念的碰撞,一起解锁后端开发的新篇章。
|
1月前
|
JavaScript 中间件 API
Node.js进阶:Koa框架下的RESTful API设计与实现
【10月更文挑战第28天】本文介绍了如何在Koa框架下设计与实现RESTful API。首先概述了Koa框架的特点,接着讲解了RESTful API的设计原则,包括无状态和统一接口。最后,通过一个简单的博客系统示例,详细展示了如何使用Koa和koa-router实现常见的CRUD操作,包括获取、创建、更新和删除文章。
48 4
|
26天前
|
JavaScript 前端开发 API
Vue.js 3:深入探索组合式API的实践与应用
Vue.js 3:深入探索组合式API的实践与应用
|
29天前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API
|
1月前
|
JavaScript 前端开发 NoSQL
深入浅出:使用Node.js构建RESTful API
【10月更文挑战第35天】在数字时代的浪潮中,后端技术如同海洋中稳固的灯塔,为前端应用提供数据和逻辑支撑。本文旨在通过浅显易懂的方式,带领读者了解如何利用Node.js这一强大的后端平台,搭建一个高效、可靠的RESTful API。我们将从基础概念入手,逐步深入到代码实践,最终实现一个简单的API示例。这不仅是对技术的探索,也是对知识传递方式的一次创新尝试。让我们一起启航,探索Node.js的奥秘,解锁后端开发的无限可能。