Необходимо сбросить только индексы массива Javascript
У меня есть цикл, который возвращает массив: return
1st loop:
arr[0]
arr[1]
arr[2]
arr[3] Here length that i get is 4 (Not a problem)
вернуть
2nd loop
arr[4]
arr[5]
arr[6]
arr[7]
arr[8]
Здесь длина, которую я получаю, равна 9. Вернуться
То, что я хочу здесь, это фактическое количество индексов, т.е. мне нужно, чтобы оно было 5. Как я могу это сделать... И есть ли способ, что когда я вхожу в каждый цикл каждый раз, когда он начинается с 0, так что я получаю правильную длину во всех петли?
3 ответа
Это легко сделать с помощью Array.filter:
resetArr = orgArr.filter(function(){return true;});
Вы можете просто скопировать все элементы из массива в новый массив, индексы которого начинаются с нуля.
Например
function startFromZero(arr) {
var newArr = [];
var count = 0;
for (var i in arr) {
newArr[count++] = arr[i];
}
return newArr;
}
// messed up array
x = [];
x[3] = 'a';
x[4] = 'b';
x[5] = 'c';
// everything is reordered starting at zero
x = startFromZero(x);
Возможно underscore.js будет полезен здесь.
Функция _.compact() возвращает копию массива без неопределенных значений.
Смотрите: http://underscorejs.org/