亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 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 關注
  • 260 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號