首先对于数组的API,我是以原数组是否改变去分的两类,一种是会改变自身数组的方法,另一种不会.

至于是ES6还是ES5的方法并没有过多的记忆,会用即可

序号数组方法功能原数组是否改变
1push() 在数组的最后一位新增一个或多个数据,返回值是长度改变
2unshift()在数组的第一位新增一个或多个数据,返回值是长度改变
3pop()

删除最后一位,并返回删除的数据

改变
4shift()删除第一位,并返回删除的数据改变
5reverse()反转数组,返回结果改变
6join()使用分隔符,将数组转为字符串并返回不改变
7slice()截取指定位置的数组,并返回不改变
8concat()合并数组,并返回合并之后的数据不改变
9sort()排序(字符规则),返回结果改变
10splice()删除指定位置,并替换,返回删除的数据改变
11toString()直接转为字符串,并返回不改变
12valueOf()返回数组对象的原始值不改变
13indexOf()查询并返回数据的索引不改变
14lastIndexOf()反向查询并返回数据的索引不改变
15forEach()参数为回调函数,会遍历数组所有的项,回调函数接受三个参数,分别为value,index,self; forEach返回值undefind不改变
16map()同forEach,同时回调函数返回数据,组成新数组由map返回不改变
17filter()同forEach,同时回调函数返回布尔值,为true的数据组成新数组由filter返回不改变
18every()同forEach,同时回调函数返回布尔值,全部为true,由every返回true不改变
19some()同forEach,同时回调函数返回布尔值,只要由一个为true,由some返回true不改变
20reduce()归并,同forEach,迭代数组的所有项,并构建一个最终值,由reduce返回不改变
21reduceRight()反向归并,同forEach,迭代数组的所有项,并构建一个最终值,由reduceRight返回0不改变
22some()会遍历数组中的每个元素,让每个值都执行一遍callback函数,

如果有一个元素满足条件,返回true , 剩余的元素不会再执行检测。

如果没有满足条件的元素,则返回false。

不改变

1.push(),在数组的最后一位新增一个或多个数据,返回值是长度

 let arr1 = [1, 2, 3, 4, 5]
        let num = 6
        let result = arr1.push(num)
        console.log(arr1);     // [1, 2, 3, 4, 5, 6]
        console.log(result);  //6

2.unshift(),在数组的第一位新增一个或多个数据,返回值是长度

 let arr1 = [1, 2, 3, 4, 5]
        let num = 6
        let result = arr1.unshift(num)
        console.log(arr1);   //[6, 1, 2, 3, 4, 5]
        console.log(result); //6

3.pop(),删除最后一位,并返回删除的数据

        

let arr1 = [1, 2, 3, 4, 5]
        let result = arr1.pop()
        console.log(arr1);   //[1, 2, 3, 4]
        console.log(result); //5

4.shift(),删除第一位,并返回删除的数据

 let arr1 = [1, 2, 3, 4, 5]
        let result = arr1.shift()
        console.log(arr1);   //[2, 3, 4, 5]
        console.log(result); //1

5.reverse(),反转数组,返回结果


        let arr = [1, 2, 3, 4, 5]
        let result = arr.reverse()
        console.log(arr);   //[5, 4, 3, 2, 1]
        console.log(result); //[5, 4, 3, 2, 1]

6.join("连接符"),使用分隔符,将数组转为字符串并返回

        常用场景一:

 let arr = [1, 2, 3, 4, 5]
        let result = arr.join()
        console.log(arr);   //  [1, 2, 3, 4, 5]
        console.log(result); //  1,2,3,4,5

        常用场景二:

  let arr = [1, 2, 3, 4, 5]
        let result = arr.join("")
        console.log(arr);   //  [1, 2, 3, 4, 5]
        console.log(result); //  12345

        常用场景三:

let arr = [1, 2, 3, 4, 5]
        let result = arr.join("|")
        let result2 = arr.join(" and ")
        console.log(arr);   //  [1, 2, 3, 4, 5]
        console.log(result); //  1|2|3|4|5
        console.log(result2); //  1 and 2 and 3 and 4 and 5

7.slice((start[,end]),截取指定位置的数组,并返回

        tips:第一个参数为起始索引,

               第二个参数为结束索引,可传可不传

               截取结果含头不含尾

               省略第二个参数表示start位置开始一直截取到末尾

               支持附属,表示倒数第几个开始

 let arr = [1, 2, 3, 4, 5]
        let result = arr.slice(1, 3) //含头不含尾
        let result2 = arr.slice(1)    //省略第二个参数表示从start位置开始一直截取到末尾
        let result3 = arr.slice(-3)    //支持负数,表示倒数第几个
        console.log(arr);     //  [1, 2, 3, 4, 5] //含头不含尾
        console.log(result);  //  [2, 3]
        console.log(result2); //  [2, 3, 4, 5]
        console.log(result3); //  [3, 4, 5]

8.concat(),合并数组,并返回合并之后的数据

        tips:不会修改原数组,返回新数组;

                concat() 的某个参数本身是一个数组,则会将该数组的元素衔接到 arr 中

 let arr = [1, 2, 3]
        let arr2 = [6, 7, 8, 9]
        let arr3 = [4, [5, [7, 8]]]
        let result = arr.concat(arr2)
        let result2 = arr.concat(4, 5)
        let result3 = arr.concat(arr3)
        console.log(result);  //[1, 2, 3, 6, 7, 8, 9]
        console.log(result2);  //[1, 2, 3, 4, 5]
        console.log(result3); //[1, 2, 3, 4, Array(2)]

9.sort(),排序(字符规则),返回结果,会改变原数组

        (1)默认按照数组元素第一位的ASCII码从小到大排列,并不是从大到小!

let arr = [9, 311, 81, 1, 2, 8, 3, 4, 9, 2, 1, 6, 7]
        let result = arr.sort()
        console.log(arr) //直接修改原数组
        console.log(result); //[1, 1, 2, 2, 3, 311, 4, 6, 7, 8, 81, 9, 9]

        (2)设置回调函数,即可实现升序降序的实现

    let arr = [9, 311, 81, 1, 2, 8, 3, 4, 9, 2, 1, 6, 7]
        let result = arr.sort(function (a, b) {
            return a - b
        })
        console.log(arr) //[1, 1, 2, 2, 3, 4, 6, 7, 8, 9, 9, 81, 311]
        console.log(result); //[1, 1, 2, 2, 3, 4, 6, 7, 8, 9, 9, 81, 311]

        result = arr.sort(function (a, b) {
            return b - a
        })
        console.log(arr) //[311, 81, 9, 9, 8, 7, 6, 4, 3, 2, 2, 1, 1]
        console.log(result); //[311, 81, 9, 9, 8, 7, 6, 4, 3, 2, 2, 1, 1]

        (3)随机打散(拓展)


        let arr = [9, 311, 81, 1, 2, 8, 3, 4, 9, 2, 1, 6, 7]
        arr.sort(function () {
            undefined
            return Math.random() > .5 ? 1 : -1
        })
        console.log(arr); //[6, 81, 7, 2, 8, 4, 2, 1, 9, 311, 1, 3, 9]

10.splice(start, deleteCount [,value1,value2...]) ,删除指定位置,并替换,返回删除的数据

        1.只传star参数,删除后面所有元素,并返回删除的元素

 let arr = [1, 2, 3, 4, 5]
        let result = arr.splice(1)
        console.log(arr); //[1]
        console.log(result); //[2, 3, 4, 5]

        2.两个参数,从 start 开始,并包含 start 处的元素,删除deleteCount个元素

 let arr = [1, 2, 3, 4, 5]
        let result = arr.splice(1, 2)
        console.log(arr); //[1, 4, 5]
        console.log(result); //[2, 3]

        3.三个参数

                替换写法:  第三个参数为替换的值

let arr = [1, 2, 3, 4, 5]
        let result = arr.splice(2, 1, "6")
        console.log(arr); // [1, 2, '6', 4, 5]
        console.log(result); //[3]

                插入写法:第二个参数为0,插入元素在start前面

 let arr = [1, 2, 3, 4, 5]
        let result = arr.splice(2, 0, "6")
        console.log(arr); // [1, 2, '6', 3, 4, 5]
        console.log(result); //[]

11.toString() ,直接转为字符串,并返回,不会改变原数组

        也可以写成 String(arr)

let arr = [1, 2, 3, 4, 5]
        let result = arr.toString()
        console.log(arr); //[1, 2, 3, 4, 5]
        console.log(result); //1,2,3,4,5

12.valueOf(),返回数组对象的原始值 不改变原数组,对于数组几乎不用

let arr = [1, 2, 3, 4, 5]
        let result = arr.valueOf()
        console.log(arr); //[1, 2, 3, 4, 5]
        console.log(result); //[1, 2, 3, 4, 5]

13.indexOf(),查询并返回数据的索引,不改变数组本身

 let arr = [1, 2, 3, 4, 5]
        let result = arr.indexOf(5)
        let result2 = arr.indexOf(6)
        console.log(arr); //[1, 2, 3, 4, 5]
        console.log(result); //4   找到返回目标索引
        console.log(result2); //-1 未找到返回-1

14.lastIndexOf() ,反向查询并返回数据的索引,不改变数组本身

let arr = [1, 2, 3, 4, 5]
        let result = arr.lastIndexOf(1)
        let result2 = arr.indexOf(6)
        console.log(arr); //[1, 2, 3, 4, 5]
        console.log(result); //0   找到返回目标索引
        console.log(result2); //-1 未找到返回-1

15.forEach(),参数为回调函数,会遍历数组所有的项,回调函数接受三个参数,分别为value,index,self; forEach返回值undefind

 let arr = [1, 2, 3, 4, 5]
        let result = arr.forEach((item, index, self) => {
            console.log(item, index, self)
            // 参数item: 数组中每一项的内容
            // 参数index: 数组索引
            // 参数a: 指的是数组本身
        })
        console.log(result); // undefined

16.map() 同forEach,同时回调函数返回数据,组成新数组由map返回,不改变原数组

  let arr = [1, 2, 3, 4, 5]
        let result = arr.map((item) => {
            return item + 1
        })
        console.log(result) // [2, 3, 4, 5, 6]
        console.log(arr) //原数组不变[1, 2, 3, 4, 5]

17.filter() 同forEach,同时回调函数返回布尔值,为true的数据组成新数组由filter返回,不改变原数组

tips:返回是过滤的数组喔~

 let arr = [1, 2, 3, 4, 5]
        let result = arr.filter((item) => {
            return item > 2   //true的时候返回item,false不返回
        })
        console.log(result) // 返回筛选结果[3, 4, 5]
        console.log(arr) //原数组不变[1, 2, 3, 4, 5]

18.every(),同forEach,同时回调函数返回布尔值,全部为true,由every返回true

  let arr = [1, 2, 3, 4, 5]
        let result = arr.every((item) => {
            return item >= 1
        })
        console.log(result) // 全部满足条件返回true
        console.log(arr) //原数组不变[1, 2, 3, 4, 5]

如果有一个不满足条件 例如:

 let arr = [1, 2, 3, 4, 5]
        let result = arr.every((item) => {
            return item >= 2
        })
        console.log(result) // false
        console.log(arr) //原数组不变[1, 2, 3, 4, 5]

19.some(),同forEach,同时回调函数返回布尔值,只要由一个为true,由some返回true,不会改变原数组

  let arr = [1, 2, 3, 4, 5]
        let result = arr.some((item) => {
            return item >= 4
        })
        console.log(result);//true  当有item其中一项为true的时候就会返回true
        console.log(arr);//[1, 2, 3, 4, 5]

20.reduce(),归并,reduce的第2个参数是可选的,也就是初始值是可选的。当不指定初始值时,它将使用数组的第一个元素作为初始值。函数里面的 index 是当前 value 在数组中的索引。当不传入初始值的时候,index 是从 1 开始的,总的循环次数比数组长度少1。当传入初始值的时候,index 是从 0 也就是第一个元素开始,数组有多长就会遍历几次。

  let arr = [1, 2, 3, 4, 5]
        let result = arr.reduce((total, value, index, arr) => {
            return total + value
        }, 0)
        console.log(result); //15
        console.log(arr); //[1, 2, 3, 4, 5]

21.reduceRight(),reduceRight() 的工作原理和 reduce() 一样,不同的是它按照数组索引从高到低(从右到左)处理数组。

 let arr = [1, 2, 3, 4, 5]
        let result = arr.reduceRight(function (x, y) {
            return x / y;
        });
        console.log(arr);// [1, 2, 3, 4, 5]
        console.log(result);//0.20833333333333334

22.some(),会遍历数组中的每个元素,让每个值都执行一遍callback函数,

如果有一个元素满足条件,返回true , 剩余的元素不会再执行检测。

如果没有满足条件的元素,则返回false,不改变本身

   let arr = [1,2,3,4,5,6,7,8]
        let result = arr.some((item) => {
            return item > 9
        })
        let result2 = arr.some((item) => {
            return item > 5
        })
        console.log(arr); // [1, 2, 3, 4, 5, 6, 7, 8]
        console.log(result); //false
        console.log(result2); //true

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐