需要仅重置Javascript数组的索引

时间:2012-07-10 13:01:56

标签: javascript arrays indexing indexof

我有一个返回数组的for循环: 返回

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. return

我想要的是指数的实际数量,即我需要它为5.我怎么能这样做...当我每次从0开始进入每个循环以便我得到适当的时候有一种方法所有循环中的长度?

4 个答案:

答案 0 :(得分:30)

使用Array.filter:

可以很容易地完成
resetArr = orgArr.filter(function(){return true;});

答案 1 :(得分:4)

您可以将数组中的所有元素复制到索引从零开始的新数组中。

E.g。

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);

答案 2 :(得分:2)

也许underscore.js在这里很有用。

_.compact()函数返回没有未定义的数组副本。

请参阅:http://underscorejs.org/#compact

答案 3 :(得分:0)

容易

var filterd_array = my_array.filter(Boolean);