我有
x = [false, false, true, true, false]
如果数组中至少有一个true
,我想要一个返回true
的函数,如下所示:http://jsfiddle.net/7uVWk/
x = [false, false, true, true, false];
function hasTrue(x) {
result = false;
for (var i=0; i <x.length; i++) {
result = result || x[i];
}
}
document.write(hasTrue(result));
如何更简洁地实现这一结果?
答案 0 :(得分:5)
使用Array.prototype.some
(我没有写一个单独的函数,因为这个语法已经很有意义了):
var x = [false, false, true, true, false];
x.some(function(val) {
return val === true;
}); // true or false. In this case, true
答案 1 :(得分:4)
好吧,当你发现第一个真的时,你可以退出循环:
x = [false, false, true, true, false];
function hasTrue(x) {
for (var i=0; i <x.length; i++) {
if(x[i]) return true;
}
return false;
}
document.write(hasTrue(result));
那简洁吗?
答案 2 :(得分:2)
逻辑上或数组中的所有元素相当于其中一个元素为真。以下功能会更有效:
function arrayHasTrue(x_)
{
for(var i = 0; i < x_.length; ++i)
{
if(x_[ i ])
{
return true;
}
}
return false;
}
答案 3 :(得分:0)
你可以使用递归:
function hasTrue(x) {
return x.length == 1 ? x[0] : x[0] || hasTrue(x.slice(1));
}