清空空槽的函数数组

Tho*_*ian 2 javascript arrays

即时通讯有问题,我有一系列经常添加和删除的功能.

但是,当我在数组上做foreach时,它说索引不存在.

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

去掉: delete arr[indexToRemove];

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

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

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

有没有更好的解决方案,并且空数组的函数插槽看起来像null?

Mat*_*all 7

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


输入:arr.push(cont);
去掉:arr.splice(indexToRemove, 1);