如何“重置”阵列的键?

Cod*_*key -1 javascript

如果我有一个数组并且删除了某些元素,那么最终得到的数组将具有非连续键:

var arr = [15,16,20,21,-1];
delete arr[1];
delete arr[3];
console.log(arr);
// [0: 15, 2: 20, 4: -1]
Run Code Online (Sandbox Code Playgroud)

如何“重置”阵列的键?

我应该以这样的数组结束:

[0: 15, 1: 20, 2: -1]
Run Code Online (Sandbox Code Playgroud)

小智 5

例如,您可以使用Array.prototype.filter方法。

var array = [];
array[30] = 1;
array.length; // 31

var compactArray = array.filter(function (item) {
    return item !== undefined;
});

compactArray.length; // 1
Run Code Online (Sandbox Code Playgroud)

如果它是一个对象,for..in循环将很有用

var array = { 31: 1};
var compactArray = [];
for (var i in array) {
    compactArray.push(array[i]);
}
Run Code Online (Sandbox Code Playgroud)