2015-11-02 61 views
-1

比方说,我有一个包含n布尔值元素的数组。得到数组的布尔结果

var a = [true,false,true,true,false]

我该如何做数组的OR乘积。在一个命令

var result = a.some(function(value) { 
    return value; 
}); 

回答

7

您可以使用some

!!~a.indexOf(true) 
1

简称:

使var result = (true || false || true || true || false) = true

+3

'a.indexOf(真)> -1' – Tushar

+1

为什么不直接用'-1' :-) – Grundy

0

您可以遍历数组并找到它。

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/

+1

比较,当你发现第一次TRUE;不需要其他循环,因为值没有改变 – Grundy

0

MDN

Array.prototype.reduce()方法适用的功能对的储液器查找数组的每个值(从左到右)以将其减少为单个值。

a.reduce(function(prev, curr) { 
    return prev || curr; 
}); 
1

所有这些建议都太复杂。只是保持简单。如果你想OR,那么你只需要检查,如果数组包含单个true值:

var result = a.indexOf(true) != -1; 

同样,如果你想你可以只检查,如果它不包含false值,如果你还希望导致假空数组然后检查长度也:

var result = a.length > 0 && a.indexOf(false) == -1; 

Here is a working example,它显示了OR和AND的作用。你可以看到保持简单,比其他建议快得多(当然,Nina离我的距离很近,因为她的回答很相似,但可读性差)。当然,你可以争辩,性能不会被这样的事情所注意到,但仍然更好地使用最快的方法。

+1

检查出来,但AND不适用于空数组。 – airnet

+0

@airnet:好的,我把那个排除出来;)用AND来排空数组的结果是什么? – musefan

+1

OR和AND的结果应该是假的 – airnet