我有一個數組["Lorem", "", "ipsum"]
。我想從這個數組中刪除空字符串並獲得["Lorem", "ipsum"]
。從字符串數組中刪除空字符串 - jQuery
有沒有辦法做到這一點,而不使用循環,遍歷每個元素並將其刪除?
我有一個數組["Lorem", "", "ipsum"]
。我想從這個數組中刪除空字符串並獲得["Lorem", "ipsum"]
。從字符串數組中刪除空字符串 - jQuery
有沒有辦法做到這一點,而不使用循環,遍歷每個元素並將其刪除?
您可以使用filter
:
var newArray = oldArray.filter(function(v){return v!==''});
The MDN對IE8的兼容性解決方法。您還可以使用一個很好的老循環,如果你不打算使用filter
其他地方,有一個與循環沒有問題... ...
引用「循環...沒有問題」,好吧,除了循環可以(並不總是)非常慢。你有沒有試圖用js-fiddle中的循環來補充本地indexOf()函數。讓我們只是說indexOf更快。 – macguru2000
<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>
兩個測試。
查看更新的答案.. –
另一種方法是使用jQuery的.map()功能:如果使用(在IE8以下大概不會工作)的JavaScript 1.6
var newArray = $.map(oldArray, function(v){
return v === "" ? null : v;
});
可以使用
arr.filter(Boolean) //filters all non-true values
如。
[1, false, "", undefined, null, "Lorem"].filter(Boolean); // [1, "Lorem"]
變種ARR = [A,B,C,E,F,G,H];
arr = jQuery.grep(arr,function(n){return(n);});
arr現在是[a,b,c,d,e,f,g];
當你提到「循環遍歷」時,你的意思是說傳統的vanilla JavaScript循環正確嗎? –