2015-10-29 2 views
-2

Я был массив, который выглядел так:Как удалить элемент в массиве, который начинается с 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" 

It было предложено поставить эти предметы в таблицу и подсчитать, сколько из них было там. Это я сделал, но из-за того, что javascript принимает переменные var apples; как строка, счетчик выходил с 11 x яблоками (конкатенация не добавлялась), и мне пришлось объявлять переменную как 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, поскольку это все, над чем я должен работать.

Спасибо заранее

+2

«В нем есть 0». В качестве разработчика вы должны научиться более четко выражать свои намерения. По-видимому, это не «есть», а «начинается с». Затем, когда вы правильно это сформулируете, вопрос становится более понятным и (что неудивительно) простым для Google. – zerkms

+0

'Было предложено поставить эти предметы в таблицу и подсчитать, сколько из них было там? какой стол? вы имеете в виду базу данных ... –

+0

, если это так должно быть сделано в самой стороне db –

ответ

3

Измени если условие

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

это только игнорирует те элементы, которые начинаются с «0 х ..», а не если 0 присутствует в любом месте строки.

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

Что вы делаете с '10'? –

0

Попробуйте это:

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

... 

Это означает; если в нем есть хотя бы один 0, пропустите его.

+0

Что делать, если есть 10 яблок? – JJJ

+0

@Juhana 9 украдены ... :-) –

0

Вы можете просто добавить случай в свою функцию cleanArray, чтобы проверить, начинается ли строка с 0. Если это случай, который вы просто не нажимаете. В вашем случае, если добавить:

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

Таким образом, это только добавляет часть, если она не имеет 0 кол.

Смежные вопросы