正在获取数组的布尔结果
Getting boolean result of array
假设我有一个数组,其中包含布尔值的n
元素。
var a=[true,false,true,true,false]
如何计算数组的OR乘积。
因此var result = (true || false || true || true || false) = true
您可以使用some
:
var result = a.some(function(value) {
return value;
});
所有这些建议都太复杂了。保持简单。如果您想要OR,那么您只需要检查数组是否包含单个true
值:
var result = a.indexOf(true) != -1;
类似地,如果您想要AND,您可以检查它是否不包含false
值,如果您希望空数组导致false,那么也可以检查长度:
var result = a.length > 0 && a.indexOf(false) == -1;
下面是一个工作示例,它显示了OR和and的作用。
这里是对所有当前答案的性能回顾,你可以看到,保持简单比其他建议快得多(好吧,尼娜和我的答案很接近,因为她的答案很相似,但可读性较差)。当然,你可以说这样的方法不会注意到性能,但无论如何,最好使用最快的方法。
一个命令的缩写。
!!~a.indexOf(true)
您可以迭代数组并找到它。
var a = [false,false,false,false,false]
var result = a[0];
for(i=0;i<a.length;i++){
result = result || a[i]
}
alert(result);
我希望这能帮助你
https://jsfiddle.net/0yhhvhu7/3/
来自MDN
Array.prototype.reduce()
方法对累加器和数组的每个值(从左到右)应用一个函数,将其减少为一个值。
a.reduce(function(prev, curr) {
return prev || curr;
});
相关文章:
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- JSONP请求返回结果,但也触发error_callback
- javascript中的布尔条件
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- 我的django模板布尔变量是't在javascript中按预期工作
- 在javascript中否定布尔函数
- 有条件地在选项标记中应用布尔属性
- Javascript:我可以't找到正确的方式来表达布尔“;如果“;以得到我想要的结果
- Knockoutjs 可观察的布尔值返回奇怪的结果
- Javascript 布尔值:false && true 结果为 true
- Javascript & lodash ..将 _.查找结果转换为布尔值
- 正在获取数组的布尔结果
- Javascript布尔结果失败
- 将布尔结果转换为数字/整数
- 如何根据promise的结果返回布尔值?
- Angular自定义过滤器只返回布尔值=== true的结果
- 在$中测试布尔变量时出现奇数结果.getJSON函数