js数组方法forEach、map、filter、reduce、every、some总结

首先是函数概述:
map():返回一个新的Array,每个元素为调用func的结果
filter():返回一个符合func条件的元素数组
some():返回一个boolean,判断是否有元素是否符合func条件
every():返回一个boolean,判断每个元素是否符合func条件
forEach():没有返回值,只是针对每个元素调用func
reduce():有返回值,重点是计算数组,返回一个值
其次
1、map速度比forEach快
2、map会返回一个新数组,不对原数组产生影响,foreach不会产生新数组,
3、map因为返回数组所以可以链式操作,forEach不能

filter
语法

var new_arr = arr.filter(callback(element, index, array){
}, this)

参数:callback 回调

 element 当前的value
 index   当前的索引值
 array   arr这个数组对象
 this 回调的this指向

用法
//如果返回值是true的话,就是符合条件。
//filter 不会改变原数组,它返回过滤后的新数组。
//这个里返回数组里面的偶数
[10,11,12,13].filter((v)=>v % 2 == 0)
场景
场景就是过滤,把符合条件的整理到一起,常见的就是展示审核通过的数据

forEach
语法

arr.forEach(callback(element, index, array){
}, this)

参数:callback 回调

 element 当前的value
 index   当前的索引值
 array   arr这个数组对象
 this 回调的this指向

用法
//遍历数组。打印到控制台

[10,11,12,13].forEach((v)=>{
    console.log(v)
})

// 成功的收集到success里面,错误的收集到error里面。

var success = [],error = [];
[{state:1},{state:0},{state:0},{state:0}].forEach((v)=>{
    if(v.state == 1){
        success.push(v)
    }else{
        error.push(v)
    }
})

场景
比如说绑定事件,比如判断值然后push到不同的地方

map
语法

arr.map(callback(element, index, array){ }, this)

参数:callback 回调

 element 当前的value
 index   当前的索引值
 array   arr这个数组对象
 this 回调的this指向

用法
//把数值格式化,保留两位小数
[10.055,11.054,12.056,13.789].map((v)=>+v.toFixed(2))
场景
这个一般就用在,我需要一组值,但是这个值不对,需要计算原数组来生成。

reduce
语法

arr.reduce(callback(accumulator, element, index, array){
}, initialValue)

参数:callback 回调
sum 累加器的返回值,也就是上一次回调的返回值 element 当前的value index 当前的索引值 array arr这个数组对象 initialValue 初始传入的值,如果不传回调从下标1开始,下标0作为初始值
用法
//累加

[10,11,12,13].reduce((s,v)=>s+v,0)

场景
这个计算整个数组得出一个值的

some
语法

arr.some(callback(element, index, array){
}, this)

参数:callback 回调

 element 当前的value
 index   当前的索引值
 array   arr这个数组对象
 this 回调的this指向

用法

initArray = initArray.some(item => { if (item === 1){ return true } return false })

场景
这个一般就用在,判断数组里是否有某个值。

every
语法

arr.every(callback(element, index, array){
}, this)

参数:callback 回调

 element 当前的value
 index   当前的索引值
 array   arr这个数组对象
 this 回调的this指向

用法

initArray = initArray.every(item => { if (item === 1){ return true } return false })

场景
这个一般就用在,判断数组的每个元素是否符合func条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值