正在获取数组的布尔结果

Getting boolean result of array

本文关键字:布尔 结果 数组 获取      更新时间:2023-09-26

假设我有一个数组,其中包含布尔值的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;
});