在二维数组中分配值时,如何捕获索引?

时间:2019-07-11 01:55:42

标签: javascript multidimensional-array proxy

我有一个2D阵列。如您所料,它是由一个行数组组成的,每行中都有第二个数组形式的列。当我为特定的[Row] [Column]对分配值时,我希望有一个函数可以捕获已修改元素的索引,然后可以对它们进行处理。

我尝试使用代理,但是我只能使它拦截对行所做的更改,而不是行和列的组合。 即

row [3] = {1,2,3,4}; //有效!

row [3] [2] = 42; //不起作用:/

我在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 个答案:

答案 0 :(得分:0)

代理获取器/设置器仅响应顶级属性更改。参见https://github.com/geuis/bodega/blob/master/src/store.js

或者,您可以为每个父数组索引中的row和/或column之类的属性分配一个具有getter / setter方法的新Proxy对象。这样一来,您就可以检测到这些属性之一的更新时间。