Необходимо сбросить только индексы массива 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);

Легко,

var filterd_array = my_array.filter(Boolean);

Возможно underscore.js будет полезен здесь.

Функция _.compact() возвращает копию массива без неопределенных значений.

Смотрите: http://underscorejs.org/

Другие вопросы по тегам