javascript - 如果真布尔值多于假布尔值,或者真布尔值与假布尔值相同,则返回真
问题描述
编写一个调用的函数,该函数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
解决方案
您还可以使用 reduce 和 net counter (c):
function hasMoreTrue(arr) {
return arr.reduce(c, v) => c + (v ? 1 : -1), 0) >= 0;
}
推荐阅读
- sql - 如何在 Oracle SQL 中将整数除以产生浮点数?
- matlab - 是否有一个内置函数可以检查变量是否是 Matlab 中最小长度的单元格?
- google-cloud-platform - Google Composer Dag 不会自动触发,甚至不会通过 CMD 触发
- java - 在Java 8中将对象列表分组并将子组减少为不同的对象
- javascript - 如何更改 HTML5 画布画板的高度?
- android - 无法更改 recyclerview 中特定项目的背景颜色
- maven - org.osgi.framework.BundleException:不支持的“Bundle-ManifestVersion”值:1
- java - 在布局文件的 Imageview 中获取空指针异常
- node.js - 如何通过 req.body 将对象数组发送到节点/猫鼬
- c - 由于排序功能导致的分段错误