的目標是在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