不包含.reduce()、. filter(),forEach()的True / False计数

时间:2019-03-14 01:01:03

标签: javascript arrays count

 var x = [true,false,true,false]

有没有办法确定一个数组中有多少个“ True”?  但不使用.reduce().filter() forEach()

How to get the count of boolean value (if it is true) in array of objects

Count the number of true members in an array of boolean values

3 个答案:

答案 0 :(得分:1)

如果只能有true / false个元素,我猜您可以.join然后用正则表达式检查字符串中有多少true个:

const getTrueCount = array => (array.join().match(/true/g) || []).length;
console.log(getTrueCount([true,false,true,false]));

答案 1 :(得分:1)

最简单的解决方案是将布尔值转换为数字(true => 1,  false => 0)。此操作使用一元+前操作数:

const array = [true, false, true, false];

function getTrueCount(array) {
    let trueCount = 0;
    for (let i = 0; i < array.length; i++) {
        trueCount += +(array[i]);
    }

    return trueCount;
}

答案 2 :(得分:0)

一种实用的方法是递归,它不使用循环,也不使用数组方法:

const countTrue = ([x, ...r]) => (+x || 0) + (r.length ? countTrue(r) : 0);

console.log(countTrue([true,false,true,false]));
console.log(countTrue([false,false,true,false]));
console.log(countTrue([false,false,false,false]));
console.log(countTrue([]));