我有一个2D数组。正如您所料,它由一个行数组组成,其中的列以每行中第二个数组的形式存在。当我给一个特定的[Row][Column]对赋值时,我希望有一个函数可以捕获已经修改的元素的索引,然后能够对它们做一些事情。
我尝试过使用代理,但我只能让它拦截对Row所做的更改,而不能拦截Row和Column的组合。即
[3] = {1,2,3,4};//工作!
int [3] int [2] int [3] int [4]//不工作:/
我已经在SO,W3Schools,Google等广泛搜索。但是我找不到任何符合这个特定要求的东西。
var row=new Array();
for(var loop=0; loop<10;loop++) //Create 10 rows
{
row.push(new Array(10)); //10 columns per row for the sake of example
}
row[0][0]="Added a Value at (0,0)";
row[3][7]="Added a value at (3,7)";
console.log(row[3][7]); //outputs "Added a value at (3,7)" as expected.
这工作得很好,我很高兴能够在这个网格结构中管理数据。我希望能够捕获何时分配值并访问两个索引,以便执行验证和后续活动。任何指导都将不胜感激。
1条答案
按热度按时间rm5edbpk1#
代理getter/setter只响应顶级属性的更改。参见https://github.com/geuis/bodega/blob/master/src/store.js
或者,您可以分配一个新的Proxy对象,该对象在每个父数组索引中具有
row
和/或column
等属性的getter/setter。这将使您能够检测这些属性中的一个何时更新。