[英]Better way to check if all values on dictionary are true?
好的,這就是我得到的:
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
}
正如你所看到的,它是一個以數組作為值的字典,我想知道所有鍵的第一個值是false
, true
還是混合的,這很好用,但我確信有更好的方法來做到這一點,任何幫助?
你原生的JavaScript方法很好。 您可以只存儲一個布爾值,而不是存儲總和,將其設置為true,然后如果您看到false,則將其設置為false。 然后檢查ch == 9
而不是檢查布爾值。
但是,如果你可以使用underscore.js (其中有列出了很多有用的功能),這些功能中的一個被稱為every
如果每個項目通過事實測試檢查。 然后變得如此簡單
_.every(matchgrid, function(item) {
return item[0];
})
更短,更有點發燒友:
_.every(matchgrid, _.first); // will return true if all elements are true
var ch = 0;
var result;
for (i=0;i<9;i++) {
result = matchgrid[keys[i]][0];
if (result) {
break;
}
}
// result will be false if they are all false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.