首页 > 解决方案 > 如果真布尔值多于假布尔值,或者真布尔值与假布尔值相同,则返回真

问题描述

编写一个调用的函数,该函数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

标签: javascript

解决方案


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

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

推荐阅读