2017-02-15 39 views
0

在JavaScript中,我有一個數組,這是JS,陣圖功能無法正常工作

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}]

+0

.map函數不會更改原始數組,它會返回您應該使用的另一個數組。 –

回答

1

JavaScript的陣圖()方法

*)創建了呼籲每個數組元素的功能和它的結果的新陣按順序爲數組中的每個元素調用一次提供的函數。

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

more details

2

陣列地圖功能工作正常。 map()方法創建一個新數組,其結果是在此數組中的每個元素上調用一個提供的函數。 map()不改變它被調用的數組。

var array = [true, false] 
 

 

 

 
var new_array = array.map(function(item) { 
 
    return false; 
 
}); 
 

 
console.log(array) 
 
console.log(new_array)

-1

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

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

在函數式編程,我們建議值不經常改變的,和JavaScript借來的。至少對於.map().reduce()這是對的。確保你知道.map()

2

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

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

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

爲什麼在這裏使用下劃線?謝謝 –

+0

當你實際上並沒有將變量用於任何東西時,有時會使用下劃線作爲變量名。這純粹是一種風格。 – Scovetta