[英]How do I remove an item in an Array that starts with 0?
我有一個看起來像這樣的數組:
boxes = ["2 x Apples", "1 x Banana", "", "1 x Pear", "1 x Plum", ""]
當我運行這段代碼時:
var BoxOut = cleanArray(boxes);
var Tex = BoxOut.join("\n");
function cleanArray(actual){
var newArray = new Array();
for(var i = 0; i<actual.length; i++){
if (actual[i]){
newArray.push(actual[i]);
}
}
return newArray;
}
它返回以下字符串:
"2 x Apples 1 x Banana 1 x Pear 1 x Plum"
建議將這些物品放在一張桌子上,並計算每個物品有多少。 我已經這樣做了,但是因為 javascript 需要變量 var apples; 作為字符串,計數出來的是 11 個蘋果(串聯而不是加法),我不得不將變量聲明為 var apples = 0;
這導致數組看起來像這樣:
["2 x Apples", "1 x Banana", "0 x Orange", "1 x Pear", "1 x Plum", "0 x Grapes"]
現在我的字符串看起來像這樣:
"2 x Apples 1 x Banana 0 x Orange 1 x Pear 1 x Plum 0 x Grapes"
有沒有辦法調整cleanArray
代碼,以便刪除數組中包含 0 的項目?
我對 JS 比較陌生,答案必須是純 Javascript,因為這是我要做的全部工作。
先感謝您
將您的 if 條件更改為
if (actual[i] && actual[i].substring(0, 4) !== "0 x ") {
newArray.push(actual[i]);
}
這只會忽略那些以“0 x ..”開頭的項目,如果字符串中的任何位置都存在 0,則不會。
嘗試這個:
...
if (actual[i] && !actual[i].matches(/0/) ){
newArray.push(actual[i]);
...
這意味着; 只要其中至少有一個0
,就跳過它。
您可以在 cleanArray 函數中添加一個 case 來檢查字符串是否以 0 開頭。如果是這種情況,您就不要推送。 在您的 if 情況下添加:
if(!actual[i].startsWith("0")){newArray.push(actual[i]);}
這樣它只會添加沒有 0 計數的部分。
var boxes = ["2 x Apples", "1 x Banana", "0 x Orange", "1 x Pear", "1 x Plum", "0 x Grapes"];
var resultArr = boxes.filter(function (v) {
return v.indexOf("0") < 0;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.