我正在尝试构建一个循环在另一个数组上的数组,这个数组或多或少看起来像这个
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)
绝对不行。我错过了什么?我看到了从数组中删除无效项的一些示例,但在此上下文中超出了范围
答案 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])}
}