[英]How to update elements in multi-dimensional array
假設我具有以下數組結構:
let cells = [
['foo', 'foo'],
['foo', 'foo']
]
我想對其進行更新,使其變為:
[
['bar', 'foo'],
['foo', 'foo']
]
我以為就足夠了:
cells[0][0] = 'bar';
但這也改變了cells[1][0]
,結果是:
[
['bar', 'foo'],
['bar', 'foo']
]
如何只更改cells[0][0]
?
聽起來在程序中,您有一個數組,其中包含兩個引用同一對象的屬性。 這將在以下代碼中發生:
let row = ["foo", "foo"]
let cells = [];
cells.push(row);
cells.push(row);
當執行cells.push(row)
,您不會創建將被推送到cells
的新數組,而是通過引用傳遞了該數組。
現在只有一個數組row = ["foo", "foo"]
,由cells
對象引用兩次。 通過執行cells[0][0] = "bar"
,我將更改row
對象的第一個元素。 由於同一對象在cells
對象內部被兩次引用,因此在兩個位置上都是相同的。
根據您的用例,您要么要克隆第一個陣列,要么在第一個陣列上獨立創建一個新陣列。
對於克隆陣列的選擇,請查看此問題 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.