我有这个数组:
var x = ["happy", "", "sad", ""];
如何将其转换为:
["happy","sad"];
<小时/> 同样,我如何转换此数组:
var y = ["happy", ""];
为:
["happy"];
感谢您的帮助。
答案 0 :(得分:15)
像这样:
var x = ["happy", "", "sad", ""];
x = x.filter(function(v){
return v !== "";
});
您也可以执行return v;
,但这也会过滤掉false
,null
,0
,NaN
或任何 falsy 除了""
。
以上内容会过滤掉您阵列中的所有""
,只会留下"happy"
和"sad"
。
更新: String方法返回在其String表示形式中传递给它的参数。因此,它会为""
返回""
,这是 falsey 。所以你可以做到
x = x.filter(String);
答案 1 :(得分:3)
使用Array.prototype.filter
array = array.filter(function (elem) { return elem; });
如果您不想过滤elem !== ""
,false
等,也可以null
。
答案 2 :(得分:0)
对于您的阵列,您可以使用简单的:
x = x.filter(Boolean);
这也会过滤null
,undefined
,false
,0
值