即时出现问题,我有一系列经常添加和删除的功能。
但是当我在数组上做一个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;
有没有更好的解决方案,并且空数组的函数插槽看起来像null?
答案 0 :(得分:7)
Don't use a for...in
loop to iterate over an array;使用标准计数for
循环。请使用Array.push()
代替arr[arr.length] = cont
来添加新值。 don't use delete
to remove an element from an array;使用Array.splice()
。
输入:arr.push(cont)
;
删除:arr.splice(indexToRemove, 1);