【发布时间】:2016-09-17 09:43:35
【问题描述】:
目标是在 2d 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 也按预期工作。 (我有点惊讶它起作用了)。
我的问题是 - 有没有一种方法可以生成依赖于其他部分的二维数组的部分而不诉诸 defineProperty?这是要避免的吗?
(注意 - 在我最初的问题中,我已经完成了上述操作,然后将 m[2] 更改为其他内容。“属性”赢得了数组成员,这导致了一些混乱。这本身可能是不这样做的原因使用上述方法。道歉。)
【问题讨论】:
-
必须有更多您没有显示的代码。某处函数正在执行。
-
你在某处打电话给
m[2]=m[2]()之前有:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 5, 7, 9 ] ]
标签: javascript arrays function