2012-03-03 73 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