数组api(难点)

1.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)]

2.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.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

4.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]

5.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]

6..every(),同forEach,同时回调函数返回布尔值,全部为true,由every返回true,有一项不满足则返回false

  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]

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

8.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                   //total表示上一次return的值               
        }, 0)                                      //value表示当前遍历到的值
        console.log(result); //15                  //index当前索引
        console.log(arr); //[1, 2, 3, 4, 5]        //arr当前数组

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值