2015-11-02 88 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