我有一个数组["Lorem", "", "ipsum"]
。我想从此数组中删除空字符串并获取["Lorem", "ipsum"]
。
有没有办法在不使用循环并遍历每个元素并删除它的情况下执行此操作?
答案 0 :(得分:55)
您可以使用filter
:
var newArray = oldArray.filter(function(v){return v!==''});
The MDN有针对IE8兼容性的解决方法。如果你不打算在其他任何地方使用filter
,你也可以使用一个好的旧循环,循环没有问题......
答案 1 :(得分:8)
另一种方法是使用jquery的.map()函数:
var newArray = $.map( oldArray, function(v){
return v === "" ? null : v;
});
答案 2 :(得分:8)
如果你使用Javascript 1.6(可能不会在IE8或更低版本上工作),你可以使用
arr.filter(Boolean) //filters all non-true values
例如
[1, false, "", undefined, null, "Lorem"].filter(Boolean); // [1, "Lorem"]
答案 3 :(得分:6)
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
function cleanArray(actual)
{
var newArray = new Array();
for(var i = 0; i<actual.length; i++)
{
if (actual[i])
{
newArray.push(actual[i]);
}
}
return newArray;
}
$(function()
{
var old = ["Lorem", "", "ipsum"];
var newArr = cleanArray(old);
console.log(newArr)
});
</script>
没有循环
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
$(function()
{
var arr = ["Lorem", "", "ipsum"];
arr = $.grep(arr,function(n){
return(n);
});
console.log(arr)
});
</script>
两者都经过测试。
答案 4 :(得分:0)
var arr = [a,b,c ,, e,f ,, g,h];
arr = jQuery.grep(arr,function(n){return(n);});
arr现在是[a,b,c,d,e,f,g];