簡體   English   中英

數組映射函數不改變元素

[英]Array map function doesn't change elements

在 JavaScript 中,我有一個數組,它是

array = [true, false]

在某些情況下,我試圖初始化這個數組

array.map(item => {
   item = false
})

運行上面的代碼后,數組並沒有改變,還是[true, false] ,那么是不是有時候.map不靠譜呢?


還有一個問題:運行下面的代碼后,數組發生了變化。 為什么它在這種情況下有效?

let array = [{id:1, checked: false}, {id:2, checked:true}]
array.map(item => {
    item.checked = true
})

數組變為[{id:1, checked: true}, {id:2, checked:true}]

JavaScript 數組 map() 方法

*) 創建一個新數組,其中包含為每個數組元素調用一個函數的結果,並按順序為數組中的每個元素調用一次提供的函數。

注意: map() 方法不會對沒有值的數組元素執行函數,它不會改變原始數組。

更多細節

數組映射功能工作正常。 map()方法創建一個新數組,其中包含對該數組中的每個元素調用提供的函數的結果。 map()不會改變調用它的數組。

 var array = [true, false] var new_array = array.map(function(item) { return false; }); console.log(array) console.log(new_array)

如果你的映射很簡單,你可以這樣做:

var array = [true, false];
array = array.map(_ => false);

console.log(array);
// [false, false]

.map()方法是不可變的,檢查它的返回值:

var arr2 = array.map(item => false)
console.log(arr2)

在函數式編程中,建議值不要經常改變,JavaScript 借用了它。 至少對於.map().reduce()這是正確的。 確保您熟悉.map()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM