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;i
var 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