JQuery或JavaScript-计算有多少数组元素为真/假

JQuery或JavaScript-计算有多少数组元素为真/假,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有一个实例,其中可能不同长度的数组可以如下所示 Array [ true, false, false, true ] 或 或 我需要遍历一个数组,并且只有当有一个“false”实例时才触发一个新事件 在我提供的示例数组中,只有这一个是有效的 Array [ true, true, true, false, true ] 实现这一点最不复杂的方法是什么?您可以使用Array.filter var arr = [ true, true, true, false, true ]; if(arr.

我有一个实例,其中可能不同长度的数组可以如下所示

Array [ true, false, false, true ]

我需要遍历一个数组,并且只有当有一个“false”实例时才触发一个新事件

在我提供的示例数组中,只有这一个是有效的

Array [ true, true, true, false, true ]

实现这一点最不复杂的方法是什么?

您可以使用
Array.filter

var arr = [ true, true, true, false, true ];
if(arr.filter(function(b){ return !b; }).length == 1){
   // trigger the event
}
上面的过滤器只包含
数组的
false
,然后我们检查该
数组的
长度是否为
1

另一种创造性的方法可能是使用
replace
indexOf
,在
字符串中替换第一个出现的
false
,该字符串是通过连接
arr
并检查字符串中是否还有
false
,然后用
对其求反而形成的运算符以实现结果

if(!(arr.join("").replace("false","").indexOf("false") > -1)){
  // trigger
}

您可以使用
Array.filter

var arr = [ true, true, true, false, true ];
if(arr.filter(function(b){ return !b; }).length == 1){
   // trigger the event
}
上面的过滤器只包含
数组的
false
,然后我们检查该
数组的
长度是否为
1

另一种创造性的方法可能是使用
replace
indexOf
,在
字符串中替换第一个出现的
false
,该字符串是通过连接
arr
并检查字符串中是否还有
false
,然后用
对其求反而形成的运算符以实现结果

if(!(arr.join("").replace("false","").indexOf("false") > -1)){
  // trigger
}
Amit Joki已经有了一个解决方案,但我只想通过以下方式分享另一个解决方案:

Amit Joki已经有了一个解决方案,但我只想通过以下方式分享另一个解决方案:


我将在一分钟内对此进行测试。看起来它能满足我的需要。谢谢@越来越肯定。很高兴能帮助你。我马上就来测试。看起来它能满足我的需要。谢谢@越来越肯定。很高兴能帮助你。这也是一个很好的建议。谢谢你的参与:)这也是一个很好的建议。谢谢你的参与:)
var count = arr.reduce(function(prevVal, currVal) {
    return prevVal + (!currVal ? 1 : 0);
}, 0);

if (count === 1) {
    // Do something
}