我有一个实例,其中可能长度不同的数组看起来像这样......
Array [ true, false, false, true ]
或者
Array [ true, true, true, false, true ]
或者
Array [ true, true, true ]
如果有一个" false"的实例,我需要迭代一个数组并且只触发一个新事件。
我提出的样本数组中,这一个是唯一有效的数组
Array [ true, true, true, false, true ]
实现这一目标的最不精确的方法是什么?
答案 0 :(得分:6)
您可以使用Array.filter
var arr = [ true, true, true, false, true ];
if(arr.filter(function(b){ return !b; }).length == 1){
// trigger the event
}
以上过滤条仅包含Array
false
,然后我们会检查length
的{{1}}是否为Array
另一种创造性的方式可能是使用1
和replace
,您只需要替换indexOf
中第一次出现的false
String
并检查字符串中是否还有arr
,并使用false
运算符取消它以获得结果。
!
答案 1 :(得分:4)
Amit Joki已经有working answer,但我想使用reduce
分享另一个解决方案:
var count = arr.reduce(function(prevVal, currVal) {
return prevVal + (!currVal ? 1 : 0);
}, 0);
if (count === 1) {
// Do something
}