格式化if语句的简单方法是什么?

时间:2011-04-23 03:01:52

标签: javascript jquery

我有一个if语句:

if(firstString == "no" && secondString == "no" && thirdString == "no"){
    // Do stuff here
}

有没有更漂亮的格式化方法?使用false代替"no"不是一种选择,因为我正在检查的数据来自 AJAX 请求,而我无法控制其输出。否则我会这样写:

if(!firstString && !secondString && !thirdString){
    // Do stuff here
}

由于

更新

我知道这完全是荒谬的,但我想到这可能是最短的方式:

if(firstString + secondString + thirdString == "nonono"){
    // Do stuff here
}

6 个答案:

答案 0 :(得分:3)

鉴于字符串的数量是事先已知的,那么就我所见,你有2个选项..

  1. 保持原样。 if语句不难阅读,任何替代格式都会变得复杂或复杂。

  2. 当您从AJAX请求中检索数据时,
  3. 将字符串转换为布尔值,这样您就可以存储TRUE或FALSE而不是“yes”和“no”。这将允许您使用您首选的if语句格式,并且如果您执行大量字符串比较,则可能比许多字符串比较更有效。

  4. 最后,你所做的取决于你,但我个人认为最好坚持你所拥有的。不要担心格式化if语句,它的作用非常明显,我认为不需要改变。

答案 1 :(得分:1)

if(“no”== firstString&& firstString == secondString&& secondString == thirdString)

答案 2 :(得分:1)

function F(var value){
    return value === "no";
}

if(F(firstString) && F(secondString) && F(thirdString)){
    // Do stuff here
}

答案 3 :(得分:1)

抱歉,没想到 - 这是因为你在检查是否有'不'

if ($.inArray('no', [firstString, secondString, thirdString]) >= 0) {
    // Do something if the value is 'no'
}

更新的答案

不幸的是,jQuery没有reduce()函数(在JS 1.6中引入了另一个额外的Array,但在旧版浏览器中不可用),这样可以很好地完成这个工作。

这是一种检查是否所有都是'不'的方法:

var found = true;
$.each([firstString, secondString, thirdString], function (i, str) {
    if (str !== 'no') {
        found = false;
    }
});

看起来可能更糟糕,但是如果要检查更多的字符串,它应该更短。

如果你想将它包装在一个函数中,你可以这样做:

function allTrue (arr, checkStr) {
    var found = true;
    $.each(arr, function (i, str) {
        if (str !== checkStr) {
            found = false;
        }
    });
    return found;
}
if (allTrue([firstString, secondString, thirdString], 'no')) {
    // ...
}

答案 4 :(得分:1)

确切地确定你评估的是真还是假是有点困难,但是这可以调整一下以获得你正在寻找的东西。

var checkStrings = function() {
    var no = "no",
        args = Array.prototype.slice.call(arguments);

    for (var i = 0, len = args.length; i < len; i++) {
        if (args[i] !== no) {
            return false;
        }
    }

    return true;
};

if (checkStrings(firstString, secondString, thirdString)) {
    // Do stuff here    
}

答案 5 :(得分:0)

另一种选择,使用jQuery.unique:

var uniques = $.unique([firstString, secondString, thirdString]);
if (uniques.length === 1 && uniques[0] === "no") {
  // do stuff
}