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
答案 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([]));