我现在遇到了JS 2D阵列的奇怪问题。假设我有一个2D数组(嵌套)A
,定义为:
var A = [ [ {}, {}, {} ], [ {}, {}, {} ], [ {}, {}, {} ] ];
从上面,A
是一个嵌套的2D数组,其中每个元素都是一个空对象。然后我想在(0,0)的元素中添加一个属性foo
。因为元素是空的,我可以通过以下方式替换它的值:
A[0][0] = {foo: 199};
然后我的数组变成:A = [ [ {foo: 199}, {}, {} ], [ {}, {}, {} ], [ {}, {}, {} ] ];
。这是正确的。
但是,我的目标是动态地将新属性foo
添加到该数组中的现有对象,而不是替换其整个值。我试过了:
A[0][0].foo = 199;
它不起作用。我的整个阵列奇怪地变成了:
[ [ { foo: 199 }, { foo: 199 }, { foo: 199 } ],
[ { foo: 199 }, { foo: 199 }, { foo: 199 } ],
[ { foo: 199 }, { foo: 199 }, { foo: 199 } ] ]
这显然不是它的意思。我只想设置单元格的foo
(0,0),但效果却应用于整个数组。
我也尝试过:
A[0][0]['foo'] = 199;
但整个数组也受到影响,而不仅仅是位置(0,0)的唯一元素。
任何想法,有人发现任何错误吗?
如何动态地将属性foo
添加到2D数组的元素?