通过过滤掉空项来从数组构造一个新数组

时间:2015-04-29 02:13:02

标签: javascript

我正在尝试构建一个循环在另一个数组上的数组,这个数组或多或少看起来像这个

var x = [1, null, 324, 110, null]

我试图遍历这个并检查索引i处的项是否为null然后它进入一个新数组

var numberCollection = [];

for(var i = 0; i < x.length; i++){
    numberCollection[i] = (!!x[i]) ? x[i];
}

console.log(numberCollection)

绝对不行。我错过了什么?我看到了从数组中删除无效项的一些示例,但在此上下文中超出了范围

5 个答案:

答案 0 :(得分:4)

尝试这样的事情,

for(var i = 0; i < x.length; i++){
    if (x[i] !== null){
      numberCollection.push(x[i]);
    }
}

答案 1 :(得分:0)

让我们调用第一个数组(具有NULL的数组)A []和第二个B []。我们还需要一个int计数。

for(var i=0; i<A.length; i++){
    if(A[i] != NULL){
        B[count] = A[i];
        count++;
    }
}

应该这样做。

答案 2 :(得分:0)

其他答案有用......只是为了给你另一个选项,你可以使用ECMAScript 5中引入的新filter()方法:

var numberCollection = x.filter(function(item) {
    return !!item;
});

请注意,为了在IE8及以下版本中工作,您需要为filter()方法提供垫片;这里有一个:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter#Polyfill

答案 3 :(得分:0)

以下似乎工作正常。

var x = [1, null, 324, 110, null];
var numberCollection = [];

var k = 0;
for(i = 0; i < x.length; i++) {
    if (x[i] === null) {
        continue;
    } else {
        numberCollection[k++] = x[i];
    }
}

console.log(numberCollection);

答案 4 :(得分:0)

这应该有用。

var numberCollection = [];
for(var i = 0, j = x.length; i < j; i++){
    if (x[i] !== null) {numberCollection.push(x[i])}
}