簡體   English   中英

如何更新多維數組中的元素

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

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