的目标是在2D阵列的JavaScript来创建一个动态“总和”行中。这里的出发点:添加到一个数组在javascript - 有没有更好的办法?
var m = [[1,2,3], [4,5,6]];
我们因此可以添加第三排:
Object.defineProperty(m, 2, { get:() => m[0].map((e, i)=> e + m[1][i]) })
所以,现在我们的阵列是
[[1,2,3], [4,5,6], [5,7,9]]
它的工作原理!设置m[0][0]=10
,我们得到
[[10,2,3], [4,5,6], [14,7,9]]
这正是我想要的。 m.length = 3
如预期的,所以总和行被视为阵列的一部分。 JSON.stringify
也按预期工作。 (我有点惊讶它的工作tbh)。
我的问题是 - 有产生依赖于其他部分的2D阵列的部分不诉诸defineProperty
的方法吗?这是要避免的吗? (注意 - 在我原来的问题中,我已经完成了上述操作,然后将m[2]
更改为其他内容。'属性'胜过数组成员,这导致了一些混淆,这本身可能是一个不使用的理由上述方法Apolgies)
必须有更多的代码,你没有显示。该功能正在执行。 –
您在[] [[1,2,3],[4,5,6],[5,7,9]]' – Marcs