How can I “reset” an array's keys?
本问题已经有最佳答案,请猛点这里访问。
如果我有一个数组,并且删除了某些元素,那么我最后得到的是一个具有非连续键的数组:
1 2 3 4 5 | var arr = [15,16,20,21,-1]; delete arr[1]; delete arr[3]; console.log(arr); // [0: 15, 2: 20, 4: -1] |
如何"重置"阵列的键?
我应该以这样的数组结束:
1 | [0: 15, 1: 20, 2: -1] |
例如,您可以使用
1 2 3 4 5 6 7 8 9 | var array = []; array[30] = 1; array.length; // 31 var compactArray = array.filter(function (item) { return item !== undefined; }); compactArray.length; // 1 |
如果它是一个对象,那么
1 2 3 4 5 | var array = { 31: 1}; var compactArray = []; for (var i in array) { compactArray.push(array[i]); } |
您可以循环抛出数组,如果它是一个有效项,则推入另一个数组。
而且,当你做这种事的时候,
1 2 | var arr = []; arr[3] = 15; |
下面是一个例子。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | (function() { var arr = []; var result = []; arr[3] = 15; arr[7] = 20; arr[19] = -1; console.log(arr); console.log(JSON.stringify(arr)) arr.forEach(function(item) { if (item) { result.push(item); } }) console.log(result); console.log(JSON.stringify(result)); })() |
如果你的意思是你的物体是这样的
1 2 3 4 5 6 7 8 9 | var obj = {3: 15, 7: 20, 19: -1}; var output = {}; var counter = 0; for ( var id in obj ) { output[ String( counter ) ] = obj[ id ]; counter++; } console.log( output ); |