array的filter和map

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a250758092/article/details/80403945

filter和map方法都会遍历数组,并返回新的数组,而不影响原数组。
他们的细微区别在于,map可以在原有数据基础上做运算。而filter只能做筛选,返回的新数组还是原来的数组内容

区别

[1,2,3,4].filter(function(item){return item>1})
// [2, 3, 4]

[1,2,3,4].filter(function(item){return item+1})
// [1, 2, 3, 4]

//=======================
[1,2,3,4].map(function(item){return item>1})
//[false, true, true, true] ,因为返回处理后的数据,而item>1的结果就是ture or false

[1,2,3,4].map(function(item){return item+1})
// [2, 3, 4, 5]

如何合理利用filter和map处理双层的数据,比如

        data=[{group:'a',
list:[{age:18},{age:22}]
},{group:'b',
list:[{age:10},{age:35}]
}]
//希望返回一个新的数组,该数组的筛选条件是以list来筛选的。
var newData=data.map(function(item){
//更改item.list数据
item.list=item.list.filter(function(itemList){
return itemList.age>18

})
return item;//返回整个object

});

//newData就是筛选完的数据,先通过filter进行筛选,再通过map把list这个属性内容修改并返回新数组

猜你喜欢

转载自blog.csdn.net/a250758092/article/details/80403945