JS数组高阶循环some(),every(),find(),filter(),map(),reduce()有什么区别

定义一个数组:

let arr1 = [1, 1, 2, 3, 10, 20, 30, 100, 200, 300];

some()

只要有一个元素符合条件则为真,后面的元素不在遍历【跳出循环】

代码:

/*【some】只要有一个元素符合条件则为真,后面的元素不在遍历【跳出循环】*/
let x1 = arr1.some((i) => {
// if (i > 9) {
//     return true
// }
return i > 9
})
console.log(x1)//true
console.log(arr1)//不改变原数组

运行结果:


every()

一假即假 ,而且只要有一个元素是假,其后面的元素将不再遍历【跳出循环】

代码:

/*【every】一假即假 ,而且只要有一个元素是假,其后面的元素将不再遍历【跳出循环】。*/
        let x2 = arr1.every((i) => {
            // if (i < 100) {
            //     return true
            // }
            return i < 100
        })
        console.log(x2)//false
        console.log(arr1)//不改变原数组

运行结果如图:


find()

找数组中的元素,只要有一个元素满足就返回这个元素,其后面的元素将不再遍历【跳出循环】

代码:

 /*【find】找数组中的元素,只要有一个元素满足就返回这个元素,其后面的元素将不再遍历【跳出循环】。*/
        let x3 = arr1.find((i) => {
            return i > 100
        })

        console.log(x3)//200
        console.log(arr1)//不改变原数组

 运行结果如图:

 


 filter()

所有满足的元素都返回,创建一个新数组装这些元素

代码:

 /*【filter】所有满足的元素都返回,创建一个新数组装这些元素*/
        let x4 = arr1.filter((i) => {
            return i > 99
        })
        console.log(x4)//[100,200,300]创建了新数组
        console.log(arr1)//不改变原数组

运行结果如图:


 map()

返回修改过后的数组

代码:

 /*【map】返回修改过后的数组*/
        let x5 = arr1.map((i) => {
            return i + 1
        })
        console.log(x5)//[2, 2, 3, 4, 11, 21, 31, 101, 201, 301]
        console.log(arr1)//不改变原数组

运行结果如图:


 reduce()

reduce() 是数组的归并方法,会对数组每一项进行遍历,reduce() 可同时将前面数组项遍历产生的结果与当前遍历项进行运算

可以 求和,求最大值,去重

代码;

 /*【reduce】*/
        //求和
        let x6 = arr1.reduce(function (i, j) {
            return i + j
        }, 0)
        //求最大值
        let x66 = arr1.reduce(function (i, j) {
            return Math.max(i, j)
        }, 0)
        //去重
        let x666 = arr1.reduce(function (i, j) {
            i.indexOf(j) === -1 && i.push(j)//将需要去重处理的数组中的第1项在初始化数组【初始为空】中查找,如果找不到(空数组一定查找不到),就将该项添加到初始化数组中  ,然后第2项...
            return i
        }, [])

        console.log(x6, x66, x666)//667,300, [ 1, 2, 3, 10, 20, 30, 100, 200, 300]
        console.log(arr1)

运行结果如图:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangzhendyx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值