2

我有一个问题,我有一个经常添加和删除的函数数组。

但是当我对数组执行 foreach 时,它说索引不存在。

输入: arr[arr.length] = function () { Func() };

消除: delete arr[indexToRemove];

因为现在不工作所以我使用 foreach for (key in arr)

我感觉索引可能会溢出,所以为了防止这种情况,我想找到空数组位置并重新定位其中的项目。这就是我正在考虑的清理atm。

    var temp = new Array();
    var count = 0;
    for (key in arr) {
        if (arr[key] != null) {
            temp[count] = arr[key];
            count++;
        }
    }
    arr = temp;

有没有更好的解决方案,一个空的函数数组看起来像 null 吗?

4

1 回答 1

7

不要使用for...in循环遍历数组;使用标准计数for循环。使用Array.push()而不是arr[arr.length] = cont添加新值。也不要用于delete从数组中删除元素;使用Array.splice().


输入:arr.push(cont);
消除:arr.splice(indexToRemove, 1);

于 2013-06-13T18:13:06.147 回答