我有一个阵列["Lorem", "", "ipsum"].我想从这个数组中删除空字符串并获取["Lorem", "ipsum"].
有没有办法在不使用循环并遍历每个元素并删除它的情况下执行此操作?
Den*_*ret 61
你可以使用filter:
var newArray = oldArray.filter(function(v){return v!==''});
Run Code Online (Sandbox Code Playgroud)
MDN具有IE8兼容性的解决方法.如果你不打算filter在其他任何地方使用,你也可以使用一个好的旧循环,循环没有问题......
小智 9
另一种方法是使用jquery的.map()函数:
var newArray = $.map( oldArray, function(v){
return v === "" ? null : v;
});
Run Code Online (Sandbox Code Playgroud)
如果您使用Javascript 1.6(可能不会在IE8或更低版本上工作),您可以使用
arr.filter(Boolean) //filters all non-true values
例如.
[1, false, "", undefined, null, "Lorem"].filter(Boolean); // [1, "Lorem"]
<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>Run Code Online (Sandbox Code Playgroud)
没有循环
<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>Run Code Online (Sandbox Code Playgroud)
两者都经过测试.