9

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

返回:

1st loop:
arr[0]
arr[1]
arr[2]
arr[3]

我得到的长度是4(不是问题)。

返回:

2nd loop
arr[4]
arr[5]
arr[6]
arr[7] 
arr[8] 

我得到的长度是9.

我在这里想要的是索引的实际计数,即我需要它5。我怎样才能做到这一点。有没有一种方法可以让我每次进入每个循环时都从它开始,0以便我在所有循环中获得适当的长度?

4

4 回答 4

36

这很容易使用 Array.filter 在本地完成:

resetArr = orgArr.filter(function(){return true;});
于 2013-12-14T18:28:39.770 回答
4

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

例如

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);
于 2012-07-10T13:13:41.143 回答
3

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

_.compact()函数返回一个没有 的数组副本undefined

见:http ://underscorejs.org/#compact

于 2013-04-16T19:18:12.343 回答
3

简单的,

var filterd_array = my_array.filter(Boolean);
于 2019-03-08T14:38:21.883 回答