2015-11-02 3 views
-8

Так что я должен написать функцию Графы число нулей в массивеНапишите функцию, которая возвращает количество нулей в заданном массиве?

до сих пор все у меня есть

numberOfZeros= function(arry) { 
    if(!(Object.prototype.toString.call(arry) === '[object Array]')){ 
     arry.toString(); 
    } 
} 

тогда я застрял или даже не уверен, если я буду об этом в способ записи

но число нулей, например, должны быть 2 в numberOfZeros ([4, 0, ложь, 5, 0]):

+4

Что заставило вас думать, что ваш код будет подсчитывать количество нулей? – Oriol

+0

Кстати, что вы считаете нулем: '+ 0',' -0' или оба? – Oriol

+0

Я знаю, что могу считать вещи в строке, поэтому я подумал, что, возможно, преобразование в строку поможет. Я честно не понимаю, как ответить на этот вопрос. – Ravenna

ответ

1

Вы должны .filter() для всех значений 0, а затем просто читать .length результата.

return arry.filter(v => v === 0).length; 
+1

Указание на стрельбу _ES6_, если вы планируете использовать этот ответ, проверьте, поддерживает ли ваша среда его поддержку. –

+0

Добро пожаловать в 2015. Каждый браузер теперь поддерживает функции Arrow. – jAndy

+2

@jAndy https://kangax.github.io/compat-table/es6/ ie10 не поддерживает браузер Android версии 5.0. Добро пожаловать в 2015 году. – TankorSmash

0

Вы можете попробовать:

numberOfZeros = function (arry) { 
    var c = 0; 
    for (var k in arry) { 
     if (arry[k] === 0 && arry[k] === parseInt(arry[k], 10)) { 
      c += 1; 
     } 
    } 
    return c; 
} 
+0

numberOfZeros ([4, 0, false, 5, 0]): возвращает 1 не 2 – Ravenna

+0

Отредактировано, должно быть все в порядке! –

0

Вы можете перебирать элементы и проверить, если они равны нулю:

var n = 0; 
for(var item of array) 
    if(item === 0) // Both +0 and -0 
    ++n; 
0

Одно из возможных решений:

var numberOfZeros = function(arry) { 
 
    var i = 0; 
 
    arry.forEach(function(v) { 
 
    if (v === 0) i++; 
 
    }); 
 
    return i; 
 
} 
 

 

 
var count = numberOfZeros([4, 0, false, 5, 0]); 
 

 
alert(count);

0

Хорошо. Вы можете использовать этот подход, создав новый массив и нажав все нули в основном массиве внутри нового массива и просто получив .length нового массива.


function numberOfZeros(array) { 
    var zeros = []; 
    for(var i = 0; i < array.length; i ++){ 
     if(array[i] === 0) { 
      zeros.push(array[i]); 
     } 
    } 
    console.log(zeros.length); 
} 

numberOfZeros([4, 0, false, 5, 0]); 

JSFIDDLE - https://jsfiddle.net/ToreanJoel/3j2zpgnm/

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