2013-04-23 122 views
0

我曾看過以前的Q/A,但在那裏找不到太多幫助。主要是因爲我不明白什麼是編碼。從數組中刪除空值 - javascript

我只是想刪除我的數組中的任何空值。

我的簡單方法 - 那是行不通的!

我的代碼 -

var colors = [a, b, c, d, e, f]; 
var newArray = []; 
for (var i = 0; i < colors.length; i++) { 
    if (colors[i] !== 'undefined' || colors[i] !== null || colors[i] !== "") { 
    newArray.push(colors[i]); 
    } 
} 
console.log(newArray.length); // == 6 
console.log(newArray) //== yellow,blue,red,,, 

我本來以爲我的if語句將濾波器值的所有元素,並推到我的新陣列。 我真的需要newArray長度等於3,只是舉行價值觀,沒有空字符串""應該在newArray。

預先感謝您。

+1

「如果顏色是空** **或者如果顏色是空字符串,將其包含在結果中「。沒有值可以同時與'null'和'「」'相同。 – Jon 2013-04-23 08:42:15

+1

您使用||條件之間,所以如果顏色不是未定義的,你會插入它(只是例子)。使用&& – 2013-04-23 08:42:36

+0

哪些值應該爲空或空?你在期待什麼? – 2013-04-23 08:42:47

回答

4

使用& &,而不是||:

var colors = ["yellow", "","red", "blue", "", ""]; 
var newArray = []; 
for (var i = 0; i < colors.length; i++) { 
    if (colors[i] !== undefined && colors[i] !== null && colors[i] !== "") { 
    newArray.push(colors[i]); 
    } 
} 
console.log(newArray.length); // == 3 
console.log(newArray) //== yellow,blue,red,,, 
+1

我想你的意思是'顏色[我]!== undefined'它不應該是'undefined',這將使它成爲一個字符串 – shishirmk 2013-04-23 08:48:17

+0

是真的,我只是c/p代碼,如果改變。我也在改變這一點。 – 2013-04-23 08:51:18

2

使用& &代替||:

var colors = ["yellow", "","red", "blue", "", ""]; 
var newArray = []; 
for (var i = 0; i < colors.length; i++) { 
    if (colors[i] !== undefined && colors[i] !== null && colors[i] !== "") { 
    newArray.push(colors[i]); 
    } 
} 
console.log(newArray.length); // == 3 
console.log(newArray) //== yellow,blue,red,,, 

您的使用情況下,你也可以使用

for (var i = 0; i < colors.length; i++) { 
    if (colors[i]) { 
    newArray.push(colors[i]); 
    } 
} 

這將過濾掉任何虛假值。 Falsy值包括

false 
0 
"" 
null 
undefined 
NaN 
1

您可以簡單地使用顏色[I]到生存確認,

var colors = ["yellow", "","red", "blue", "", "", true, 1]; 
var newArray = []; 
for (var i = 0; i < colors.length; i++) { 
    if (typeof colors[i] == 'string' && colors[i]) { 
     newArray.push(colors[i]); 
    } 
} 
console.log(newArray) //["yellow", "red", "blue"] 

相關資源javascript type conversion

希望這會有所幫助。

0

如果 '假' 值是非常重要的,那麼:

var colors = [0,1,'a',,'',null,undefined,false,true]; 
    colors = colors.filter(function(e){ 
     return (e===undefined||e===null||e==='')?false:~e; 
    }); 

其他:

var colors = [0,1,'a',,'',null,undefined,false,true]; 
     colors = colors.filter(function(e){return e;}); 
0
var colors = ["yellow", null, "blue", "red", undefined, 0, ""]; 

// es5: 
var newArray = colors.filter(function(e){return !!e;}); 

// es6: 
var newArray = colors.filter((e)=>!!e); 

console.log(newArray.length); // ==> 3 
console.log(newArray) // ==> ["yellow","blue","red"]