Javascript 通过过滤空项从数组构造新数组

Javascript 通过过滤空项从数组构造新数组,javascript,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) var numb

我试图构建一个数组,它在另一个数组上循环,大致如下所示

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)
var numberCollection=[];
对于(变量i=0;i

这肯定不行。我错过了什么?我看到了一些从数组中删除无效项的示例,但这超出了本文的范围

for(var i = 0; i < x.length; i++){
    if (x[i] !== null){
      numberCollection.push(x[i]);
    }
}
for(变量i=0;i
试试这样的方法

for(var i = 0; i < x.length; i++){
    if (x[i] !== null){
      numberCollection.push(x[i]);
    }
}
for(变量i=0;i
让我们调用第一个数组(具有空值的数组)A[]和第二个数组B[]。我们还需要一个整数计数

for(var i=0; i<A.length; i++){
    if(A[i] != NULL){
        B[count] = A[i];
        count++;
    }
}
for(var i=0;i让我们调用第一个数组(具有null的数组)A[]和第二个数组B[]。我们还需要一个int计数

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

for(var i=0;i其他答案有效…为了给您另一个选项,您可以使用ECMAScript 5中引入的新的
filter()
方法:

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

请注意,要在IE8及以下版本中实现此功能,您需要为filter()方法提供一个垫片;这里有一个:。

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

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

请注意,要在IE8及以下版本中实现此功能,您需要为filter()方法提供一个垫片;这里有一个垫片:。

以下各项似乎可以正常工作

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);
var x=[1,null,324,110,null];
var numberCollection=[];
var k=0;
对于(i=0;i
以下方法似乎很有效

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);
var x=[1,null,324,110,null];
var numberCollection=[];
var k=0;
对于(i=0;i
这应该行得通

var numberCollection = [];
for(var i = 0, j = x.length; i < j; i++){
    if (x[i] !== null) {numberCollection.push(x[i])}
}
var numberCollection=[];
对于(变量i=0,j=x.length;i
这应该行得通

var numberCollection = [];
for(var i = 0, j = x.length; i < j; i++){
    if (x[i] !== null) {numberCollection.push(x[i])}
}
var numberCollection=[];
对于(变量i=0,j=x.length;i
比我快了34秒。@ScottCorbett——这一个有效。你的工作也是。我知道我的错误在哪里。谢谢你指出了正确的方向:-)只是好奇,为什么要用
!==
而不是
!=
?在这种情况下,类型比较似乎是不必要的…@MattBrowne。这里的链接可能有更好的解释。谢谢。比我快34秒。@ScottCorbett——这一个也有用。。我知道我的错误在哪里了。谢谢你指出了正确的方向:-)只是好奇,为什么
==而不仅仅是
=?在这种情况下,类型比较似乎是不必要的…@MattBrowne。这里的链接可能有更好的解释。谢谢