我有一个看起来像这样的数组:
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,因为这是我必须要做的。
提前谢谢
答案 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;
});