如果语句条件相同,除了变量之外,简化javascript if

时间:2013-02-26 16:30:54

标签: javascript if-statement simplify

如果这是一个重复的问题,我道歉。这是一个用例问题,似乎每个人都有自己的版本。

我想知道这是否可以简化:

if ($('.taxclass').text().indexOf(tax1)>-1 || $('.taxclass').text().indexOf(tax2)>-1) {}

6 个答案:

答案 0 :(得分:4)

它很简单,但你可以减少冗余,主要是通过只获取元素文本一次并重用变量:

var text = $('.taxclass').text();
if (text.indexOf(tax1)>-1 || text.indexOf(tax2)>-1) {

}

另一个注意事项可能是通过使用标识符并仅查找不同的元素(如果符合您的需要)而不是每个可能具有类taxclass的东西来减少DOM的遍历。

答案 1 :(得分:3)

您可以将$('.taxclass').text()存储在变量中,或使用正则表达式。

var str = $('.taxclass').text();

if (str.indexOf(tax1) > -1 || str.indexOf(tax2) > -1)

// Or with regex
if(/(text1)|(text2)/.test($('.taxclass').text())
{}

答案 2 :(得分:3)

var txt = $('.taxclass').text();
if (txt.indexOf(tax1)>-1 || txt.indexOf(tax2)>-1) {}

答案 3 :(得分:3)

一种超快的方式就是不要复制$('。taxclass')。text()

尝试类似

的内容
var tax = $('.taxclass').text();
if (tax.indexOf(tax1)>-1 || tax.indexOf(tax2)>-1) {}

答案 4 :(得分:1)

又快又脏:

text.indexOf(tax1+"~"+tax2)>-1

功能,适用于 n 字符串,但详细:

[tax1, tax2].some(function(s) { return s.indexOf(text)>-1 })

作为原型:

String.prototype.foundIn = function() {
    var s=this; return Array.prototype.slice.call(arguments).some(function(m)
       {return m.indexOf(s)>-1});
};

用法:

$('.taxclass').text().foundIn(tax1, tax2)

答案 5 :(得分:0)

怎么样:

f = function (x) { return $('.taxclass').text().indexOf(x) > -1; }
if (f(tax1) || f(tax2)) {}