[英]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.