Javascript 检查字典上所有值是否为真的更好方法?
好的,这就是我得到的:Javascript 检查字典上所有值是否为真的更好方法?,javascript,for-loop,dictionary,Javascript,For Loop,Dictionary,好的,这就是我得到的: var matchgrid = { "a1":[false, 0], "a2":[false, 0], "a3":[false, 0], "b1":[false, 0], "b2":[false, 0], "b3":[false, 0], "c1":[false, 0], "c2":[false, 0], "c3":[false, 0]}; var keys = Object.keys(matchgrid); var ch = 0; for
var matchgrid = {
"a1":[false, 0], "a2":[false, 0], "a3":[false, 0],
"b1":[false, 0], "b2":[false, 0], "b3":[false, 0],
"c1":[false, 0], "c2":[false, 0], "c3":[false, 0]};
var keys = Object.keys(matchgrid);
var ch = 0;
for (i=0;i<9;i++) {
if (matchgrid[keys[i]][0] === false) {
ch += 1;
} else if (matchgrid[keys[i]][0] === true) {
ch -= 1;
}
}
//then check it with:
if (ch === 9) {
//do something
} else {
//do something else
}
var matchgrid={
“a1:[false,0],“a2:[false,0],“a3:[false,0],
“b1:[false,0],“b2:[false,0],“b3:[false,0],
“c1:[false,0],“c2:[false,0],“c3:[false,0]};
var keys=Object.keys(匹配网格);
var-ch=0;
对于(i=0;ivar ch=0;
var结果;
对于(i=0;i您的原生JavaScript方法很好。您可以只存储一个布尔值,而不是存储一个和,如果您看到一个false,则将其设置为false。然后,不必检查ch==9
而只需检查布尔值
但是,如果您可以使用(它有许多有用的函数用于列表),则会调用其中一个函数来检查每个项是否都通过了真值测试
_.every(matchgrid, function(item) {
return item[0];
})
甚至更短,而且有点花哨:
_.every(matchgrid, _.first); // will return true if all elements are true
使用布尔值的问题是,它会将存储的最后一个值作为结果,在使用和之前,我尝试了这一点,因为如果它们都为false,它将仅为9。无论如何,我将检查下划线.js。是的,如果你想检查全部为真或全部为假,最好使用和。使用布尔值只检查一个更好。或者你可以使用两个布尔值,一个是allTrue
,另一个是allFalse
。这样做的好处是,一旦您知道发生了什么,就可以提前退出循环,如果其中一个为false,则不必检查其他所有布尔值。
_.every(matchgrid, _.first); // will return true if all elements are true