[英]How to mutate original array in Javascript .map() function?
[英]Why does this map function not mutate the values in the original array?
這是有問題的代碼:
const array = [
1, 2, 3
]
array.map(item => {
item = item + 1
})
console.log(array)
我以為map
方法中的item
(第一個)參數是對數組中原始項目的引用,並且直接對其進行更改會更改該第一個數組的內容……不是嗎?
您的數組包含基本類型元素(此處為整數)。 基本類型的變量不能通過其引用進行突變。 例如,如果數組的元素是對象,則可以進行突變,如下所示:
var array = [{val: 1}, {val: 2}, {val: 3}]; array.map(item => {item.val = item.val + 1}); console.log(array);
Mozilla說;
map()方法創建一個新數組,並在調用數組中的每個元素上調用提供的函數。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map
因此,map函數不會使數組的值發生變化。
我知道您不想這樣做,但是您可以使用以下命令:
const array = [ 1, 2, 3 ] array.map((item, k) => { array[k] = item + 1 }) console.log(array)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.