簡體   English   中英

格式化if語句的更簡單方法?

[英]Simpler way to format if statement?

我有一個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
}

鑒於字符串的數目是預先已知的,所以據我所知,您有2個選項。

  1. 保持原狀。 if語句不難閱讀,任何其他格式都可能一樣復雜或更復雜。

  2. 從AJAX請求中檢索數據時,將字符串轉換為布爾值,以便存儲TRUE或FALSE而不是“ yes”和“ no”。 這將允許您使用首選的if語句格式,並且如果您進行了大量的字符串比較,它可能比許多字符串比較更有效。

最后,您的工作取決於您,但就我個人而言,我認為最好堅持自己的能力。 不用擔心格式化if語句,這很明顯它的作用,而且我認為不需要更改。

If(“否” == firstString && firstString == secondString && secondString == thirdString)

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

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

抱歉,沒有考慮-這是如果您要檢查ANY是否為“否”

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')) {
    // ...
}

准確確定您要評估的結果是正確還是錯誤有點困難,但是可以稍加調整以獲取所需的內容。

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    
}

另一種選擇,使用jQuery.unique:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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