如何删除以0开头的数组中的项?

时间:2015-10-29 10:09:34

标签: javascript arrays

我有一个看起来像这样的数组:

 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,因为这是我必须要做的。

提前谢谢

4 个答案:

答案 0 :(得分:3)

将您的if条件更改为

if (actual[i] && actual[i].substring(0, 4) !== "0 x ") {
    newArray.push(actual[i]);
}

这只忽略那些以&#34; 0 x开始的项目。&#34;而不是如果字符串中的任何地方都存在0。

答案 1 :(得分:0)

试试这个:

...
if (actual[i] && !actual[i].matches(/0/) ){
    newArray.push(actual[i]);

...

这意味着;只要其中至少有一个0,就跳过它。

答案 2 :(得分:0)

你可以在cleanArray函数中添加一个case来检查字符串是否以0开头。如果是这样的话,你就不要推。 在你的if案例中添加:

if(!actual[i].startsWith("0")){newArray.push(actual[i]);}

这样它只会添加零件,如果它没有0计数。

答案 3 :(得分:-2)

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;
        });