簡體   English   中英

更好的方法來檢查字典上的所有值是否都是真的?

[英]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
}

正如你所看到的,它是一個以數組作為值的字典,我想知道所有鍵的第一個值是falsetrue還是混合的,這很好用,但我確信有更好的方法來做到這一點,任何幫助?

你原生的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM