我有一个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
}
答案 0 :(得分:3)
鉴于字符串的数量是事先已知的,那么就我所见,你有2个选项..
保持原样。 if语句不难阅读,任何替代格式都会变得复杂或复杂。
将字符串转换为布尔值,这样您就可以存储TRUE或FALSE而不是“yes”和“no”。这将允许您使用您首选的if语句格式,并且如果您执行大量字符串比较,则可能比许多字符串比较更有效。
最后,你所做的取决于你,但我个人认为最好坚持你所拥有的。不要担心格式化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
}