访问其定义中的数组项,相对索引

Access an array item in its definition, relative index

我正在尝试定义这个数组:

    postLists = [
    [
        [46276,76235,78128],
        postLists[0][0].length,
        1100
    ], [
        [],
        postLists[1][0].length,
        0
    ]
];

但是,我收到所有 postLists[x][0].length 行的未定义错误。

如何访问从自身定义的数组?有没有一种方法可以相对 select 一个项目而不引用它的整个 "path" 就像你对文件夹所做的那样? 例如,在这种情况下,[0].length 之类的内容将获得 [46276,76235,78128] 的长度,或者 ..[1](父级)将 select postLists[1].

postLists[x][0] 将容纳数十万个整数,因此需要考虑性能。
postLists[x][1] 是需要每隔几秒访问一次的原始长度,由于 postLists[x][0] 的大小,它不能在不影响性能的情况下经常访问。
postLists[x][2] 是一个索引,用于跟踪(和存储)已处理的项目,在 postLists[0][2] 中,1100 用于跳过已处理的第 1100 个项目。

我在 Greasemonkey 脚本中使用它,postLists 中的子数组的原因是我计划同时在多个选项卡上使用该脚本 运行。

脚本的开头设置如下:

window.onkeydown = function(event) {
    if (event.ctrlKey && event.altKey) {
        switch(event.keyCode) {
            case 49: activeList = postLists[0]; break; // 1
            case 50: activeList = postLists[1]; break; // 2
            case 51: activeList = postLists[2]; break; // 3
            case 52: activeList = postLists[3]; break; // 4

            case 70: // F
                toggleScript = !toggleScript;
                if (toggleScript) {
                    treatItem();
                    favObserver.observe(topNotice, {attributes: false, childList: true, characterData: true});
                } else
                    stopObserving(true);
                break;
        }
    }
};

每个函数然后使用 activeList 引用 selected 子数组。

您可以使用赋值,但会产生额外变量的副作用;例如,tmp,用于分配、重新分配一个可以改变多个场合的变量

var tmp, postLists = [
  [
    tmp = [46276, 76235, 78128],
    tmp.length,
    1100
  ],
  [
    tmp = [],
    tmp.length,
    0
  ]
];
delete tmp;
console.log(postLists);