假设我有一个数组var arr = [1,2,3],如果我有 var result = arr.filter(callback)我想要的值result将是[2,4,6]通过使用过滤器。我只想定义回调函数才能这样做。使用地图可以轻松完成,但我只想使用过滤器。
3 回答
![?](http://img1.sycdn.imooc.com/545863cd0001b72a02200220-100-100.jpg)
狐的传说
TA贡献1804条经验 获得超3个赞
正如多次所述,您没有理由应该这样做。
不可能像 map 那样做,因为 map 返回一个新数组。您可以更改原始数组,也可以复制原始数组,以免更改它。
// this modifies the orginal array
var arr1 = [1,2,3]
arr1.filter((v,index,arr)=>{
arr[index] = v * 2;
return true
})
console.log(arr1)
// or you can clone it and do the same thing
// this modifies the cloned array
var arr2 = [1,2,3]
var arr3 = arr2.slice()
arr3.filter((v,index,arr)=>{
arr[index] = v * 2;
return true
})
console.log(arr2, arr3)
所以不,你不能用过滤器重新创建地图,因为你必须修改原始数组或欺骗并使用数组的副本。
![?](http://img1.sycdn.imooc.com/545863aa00014aa802200220-100-100.jpg)
慕勒3428872
TA贡献1848条经验 获得超6个赞
你可以使用filter():
const arr = [1, 2, 3];
arr.filter((c, i) => {
arr[i] = +arr[i] * 2;
return true;
});
console.log(arr)
我们总是回来true,所以filter()在这种情况下没有意义。
添加回答
举报
0/150
提交
取消