[英]Is there a simpler way to write this if/else statement without a variable?
[英]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個選項。
保持原狀。 if語句不難閱讀,任何其他格式都可能一樣復雜或更復雜。
從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.