2012-03-03 76 views
0

我有一個關於布爾邏輯在JavaScript中instrestion問題。JavaScript布爾數組操作

我有一個FOR循環並創建了一個觸發事件,將存儲TRUE或FALSE的IF語句:

var trigger = []; 

for (i = 0; i < 3; i++){ 

    //Checking for empty fields 
    if(this.form.rows[i].fields[0].input.val() === '') { 
     if($(this.form.rows[i].row[0]).length){ 

     bla bla bla 

     trigger.push(true) 
     } 

     else { 

     trigger.push(false); 
     } 
    } 

所以在最後我要檢查陣列的每個語句的布爾運算符AND

if(trigger & ???) 

任何幫助朋友?

+2

我不知道如果我的理解:你想*數* TRUE'是陣列中多久'或測試* all *條目是否爲'true'?你還在用'trigger'做什麼?你需要一個數組嗎? '&'是*按位*和順便說一句。 – 2012-03-03 12:20:31

+0

男人,我想檢查通過布爾邏輯,如果語句將是正確的('111'和'111')將返回TRUE – 2012-03-03 12:22:35

+0

仍然不清楚和「111」和「111」實際返回111。我誠實地建議你花更多的時間恰當地說出你的問題。理解你想做什麼並不容易(或者也許只是我不明白它)。 – 2012-03-03 12:23:38

回答

4

根據您的意見一個

好了,我怎麼能檢查在陣列中的每個語句,如果這是真的,不是返回 真正

這樣,例如:

var alltrue = !/false/i.test(trigger.join('')); 
+0

謝謝你 - 我用過你的解決方案,但我認爲它會在不同的瀏覽器中出現buggy – 2012-03-03 15:13:10

1

(我用//@@@標出了新的代碼行) 我假設你想檢查每條語句是否爲真。然後,有兩種方法,取決於「bla bla bla」是否實際存在。

如果for循環僅用於檢查是否所有的字段爲空(即「喇嘛喇嘛」是空的),並觸發陣列沒有被使用之後,你的if語句可以緊湊地寫爲:

var trigger = []; 
var empty=false; //@@@ 
for (i = 0; i < 3; i++){ 

    //Checking for empty fields 
    if(this.form.rows[i].fields[0].input.val() === '') { 
     if($(this.form.rows[i].row[0]).length){ 
     } 

     else { 
     empty=true; //@@@ 
     break; //@@@ 
     } 
    } 
} 

如果你希望能夠在事後使用觸發器,這樣做:

var trigger = []; 
var dummy=[]; //@@@@ 
for (i = 0; i < 3; i++){ 

    //Checking for empty fields 
    if(this.form.rows[i].fields[0].input.val() === '') { 
     if($(this.form.rows[i].row[0]).length){ 

     bla bla bla 

     trigger.push(true) 
     } 

     else { 

     trigger.push(false); 
     } 

     dummy.push(true); //@@@@ 
    } 

//Use this if block: 
if(dummy.toString()=trigger.toString()){ 
    //Insert stuff here 
} 
//Alternatively, use this: 

if(dummy && trigger){ 
    //Insert stuff here 
} 
+0

謝謝 - 很好的解決方案 – 2012-03-03 15:12:36