map vs filter

257 阅读1分钟

处理数组有两个很好用的方法,那就是map跟filter,以前我们可能需要通过for循环来遍历数组,有了map跟filter方法后就不用啦~

filter()

创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素
注:filter() 不会对空数组进行检测、不会改变原始数组

array.filter(function(currentValue,index,arr), thisValue)
thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值

var a=[1,2,3,4,5,6,7,8,9];
var b=a.filter(function(item){return item>3;})
console.log(b);   //[4,5,6,7,8,9]

map() 

 返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。 注意: map() 不会对空数组进行检测, map() 不会改变原始数组。

array.map(function(currentValue,index,arr), thisValue)

var a=[1,2,3,4,5,6,7,8,9];
var b=a.map(function(item){return item%3;})
console.log(b);  //1,2,0,1,2,0,1,2,0

总结

filter适合从数据中筛选需要的内容

map适合获取对原数组的数据进行修改后获得与原数组长度相同的数组

优点: 不会改变原始数组

注:两个方法都要ie9及以上才支持