为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哈士奇WWW 2021-09-04 17:21:33
假设我有一个数组var arr = [1,2,3],如果我有 var result = arr.filter(callback)我想要的值result将是[2,4,6]通过使用过滤器。我只想定义回调函数才能这样做。使用地图可以轻松完成,但我只想使用过滤器。
查看完整描述

3 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

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


查看完整回答
反对 回复 2021-09-04
?
狐的传说

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)

所以不,你不能用过滤器重新创建地图,因为你必须修改原始数组或欺骗并使用数组的副本。


查看完整回答
反对 回复 2021-09-04
?
慕勒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()在这种情况下没有意义。


查看完整回答
反对 回复 2021-09-04
  • 3 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信