如何在 JavaScript 中使用 filter 来实现 map 功能

假设我有一个数组var arr = [1,2,3],如果我有 var result = arr.filter(callback)我想要的值result将是[2,4,6]通过使用过滤器。我只想定义回调函数才能这样做。使用地图可以轻松完成,但我只想使用过滤器。


哈士奇WWW
浏览 216回答 3
3回答

富国沪深

Array.prototype.filter 仅过滤数组中的现有值,有效地创建一个新数组,该数组可以根据过滤函数保存相同的值、它们的子集或空数组。

狐的传说

正如多次所述,您没有理由应该这样做。不可能像 map 那样做,因为 map 返回一个新数组。您可以更改原始数组,也可以复制原始数组,以免更改它。// this modifies the orginal arrayvar 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 arrayvar arr2 = [1,2,3]var arr3 = arr2.slice()arr3.filter((v,index,arr)=>{  arr[index] = v * 2;  return true})console.log(arr2, arr3)所以不,你不能用过滤器重新创建地图,因为你必须修改原始数组或欺骗并使用数组的副本。

慕勒3428872

你可以使用filter():const arr = [1, 2, 3];arr.filter((c, i) => {  arr[i] = +arr[i] * 2;  return true;});console.log(arr)我们总是回来true,所以filter()在这种情况下没有意义。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript