如果真布尔值多于假布尔值,或者真布尔值与假布尔值的数目相同,则返回true



编写一个接受布尔值数组的函数hasMoreTrue

如果有更多的真布尔值,函数应该返回true假布尔值或者有相同的真布尔值作为假布尔值的数目。否则,函数应该返回false

如何比较数组长度中一个元素为真或为假的次数?

function hasMoreTrue(arr) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] === true) {
return true;
} else {
return false;
}
}
}
console.log(hasMoreTrue([true, true, false])); // true
console.log(hasMoreTrue([true, false, true, false])); // true
console.log(hasMoreTrue([true, false, false, false])); // false
console.log(hasMoreTrue([false])); // false

下面的函数过滤出真布尔值,并检查它们是否超过数组长度的一半,即更真多于假。

function hasMoreTrue(arr) {
return arr.filter((i) => !!i).length >= (arr.length/2);
}

还可以使用reduce和net counter (c):

function hasMoreTrue(arr) {
return arr.reduce(c, v) => c + (v ? 1 : -1), 0) >= 0;
}

最新更新