Javascript 检查数组成员是否为true
当有一个简单的布尔值时,在以下条件下使用它很简单:Javascript 检查数组成员是否为true,javascript,jquery,arrays,boolean,Javascript,Jquery,Arrays,Boolean,当有一个简单的布尔值时,在以下条件下使用它很简单: var running = true; if(running) {/*do something*/} 使用boolen数组有什么技巧吗?大概是这样的: var running = [false,false,true,false]; if(running[]){/*do something*/} 目前我是这样做的: var uploading = false for(i=0; i< running.length
var running = true;
if(running) {/*do something*/}
使用boolen数组有什么技巧吗?大概是这样的:
var running = [false,false,true,false];
if(running[]){/*do something*/}
目前我是这样做的:
var uploading = false
for(i=0; i< running.length ; i++)
{
if(running[i]) uploading = true;
}
if(uploading)
var上传=false
对于(i=0;i
但我觉得这并不是真正完美的代码,他们可能是一些技巧,速记方法。。可以是纯javascript,也可以是Jquery,Jquery具有
$。inArray
方法:
uploading = $.inArray(running, true) !== -1;
名称有点误导,它返回匹配元素的索引(-1
如果没有)
JavaScript有Array#indexOf
,但在IE8和更早版本中缺少它:
uploading = running.indexOf(true) !== -1;
从ES5开始,JavaScript就有了Array#一些方法,但是如果您可以使用上述任何一种方法来查找特定的值,那就太过分了。尽管如此,如果您需要对这些值进行按摩,它还是很有用的。例如,如果任何“truthy”值都正常,而不是明确的true
:
uploading = running.some(function(entry) { return !!entry; });
jQuery具有$。inArray
方法:
uploading = $.inArray(running, true) !== -1;
名称有点误导,它返回匹配元素的索引(-1
如果没有)
JavaScript有Array#indexOf
,但在IE8和更早版本中缺少它:
uploading = running.indexOf(true) !== -1;
从ES5开始,JavaScript就有了Array#一些方法,但是如果您可以使用上述任何一种方法来查找特定的值,那就太过分了。尽管如此,如果您需要对这些值进行按摩,它还是很有用的。例如,如果任何“truthy”值都正常,而不是明确的true
:
uploading = running.some(function(entry) { return !!entry; });
您只需使用以下功能:
uploading = running.indexOf(true) !== -1;
如果数组不包含true
,indexOf
将返回-1,导致中出现false
!==-1
。如果数组包含true
,indexOf
将返回它的索引,从而产生true
略短的选项:
uploading = !!~running.indexOf(true);
~
是一个按位的NOT,这将从indexOf中反转值:-1->0,0->-1,1->-2等
。然后是双
首先将此值强制转换为布尔值,然后再次将其反转,结果是布尔值输出为true
,然后数组包含true
,您可以使用以下方法:
uploading = running.indexOf(true) !== -1;
如果数组不包含true
,indexOf
将返回-1,导致中出现false
!==-1
。如果数组包含true
,indexOf
将返回它的索引,从而产生true
略短的选项:
uploading = !!~running.indexOf(true);
~
是一个按位的NOT,这将从indexOf中反转值:-1->0,0->-1,1->-2等
。然后是双
首先将此值强制转换为布尔值,然后再次将其反转,结果是布尔值输出为true
,然后数组包含一个true
,我刚刚想到了在这种情况下可以使用的小技巧:
uploading = !!Math.max.apply(null, [false, true, false, false]); // => true
基本上没有代码>路径您将获得1
(如果至少有一个true
)或false
(对于数组中的所有false
)Max
为每个传递的参数调用ToNumber
,因此true
=>1
注意:您最好使用indexOf
,这只是为了好玩,也是为了演示另一种不明显的方式。我刚刚想到了在这种情况下可以使用的小技巧:
uploading = !!Math.max.apply(null, [false, true, false, false]); // => true
基本上没有代码>路径您将获得1
(如果至少有一个true
)或false
(对于数组中的所有false
)Max
为每个传递的参数调用ToNumber
,因此true
=>1
注意:您最好使用indexOf
,这只是为了好玩,也是为了演示另一种不显眼的方式。上传=~running.indexOf(true)
如果您想要一个布尔结果函数running.indexOf(true)>-1
。是的,如果索引是0
,那仍然是false
。A=代码>或其他操作员似乎确实是必要的。上传=~running.indexOf(true)
如果您想要一个布尔结果函数running.indexOf(true)>-1
。是的,如果索引是0
,那仍然是false
。A=
或其他一些操作符似乎是必需的,确实是.JavaScript,你在干什么?JavaScript,stahp!我不知道这几乎是可能的:DJavaScript,你在干什么?JavaScript,stahp!我不知道这几乎是可能的:DIt很容易包含一个多边形填充。它很容易包含一个多边形填充。