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