Считаю вхождения true в массив. Помогите разобраться как сделать проверку на 0, undefined, null
var array1 = [true, true, true, false,
true, true, true, true,
true, false, true, false,
true, false, false, true,
true, true, true, true,
false, false, true, true
];
function countSheeps(arrayOfSheep) {
var count = 1;
arrayOfSheep.reduce(function(previousValue, currentValue, index, array) {
if (currentValue === true)
count++;
});
return count;
}
console.info(countSheeps(array1));
count = 0, количество true считается не верно.Хочу понять как можно просто посчитать число вхождений true в массив, при этом учесть проверку на null и undefined
Надо делать так:
function countSheeps(arrayOfSheep) {
return arrayOfSheep ? arrayOfSheep.reduce(function(count, value) {
return count + (value === true);
}, 0) : 0;
}
console.log(countSheeps([true, true, true, false,
true, true, true, true,
true, false, true, false,
true, false, false, true,
true, true, true, true,
false, false, true, true
]));
console.log(countSheeps([]));
console.log(countSheeps(null));
console.log(countSheeps());
console.log(countSheeps([1,2,3,true,false,"true",17,null]));
Не пойму почему если поставить count = 0, количество true считается не верно.
Потому что в твоей реализации первое значение в массиве вообще не обрабатывается.
Вы неправильно используете .reduce
var array1 = [true, true, true, false,
true, true, true, true,
true, false, true, false,
true, false, false, true,
true, true, true, true,
false, false, true, true
];
function countSheeps(arrayOfSheep) {
return (arrayOfSheep||[]).reduce(function(previousValue, currentValue, index, array) {
if (currentValue === true)
previousValue++;
return previousValue;
}, 0);
};
const countSheeps2 = list => (list||[]).reduce((c, s)=>s===true?c+1:c, 0)
console.info(countSheeps(array1));
console.info(countSheeps2(array1));
Функция "магическим" способом, подсчитывает количество true в массиве
var array1 = [true, true, true, false, true, true, true, true, true, false, true, false, true, false, false, true, true, true, true, true, false, false, true, true];
function countSheeps(arrayOfSheeps) {
return arrayOfSheeps.filter(Boolean).length;
}
console.info(countSheeps(array1));
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники