繁体   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