首先是函数概述:
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条件。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。