簡體   English   中英

如何刪除數組中以 0 開頭的項目?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM