2016-12-01 3 views
2

Есть ли более эффективный способ отображения этого:Эффективность в нескольких экземплярах параметра ===?

$(this).text() === "something" || $(this).text() === "somethingelse" 

как что-то вроде этого:

$(this).text() === ("something" || "something else") 

ради

ясности: я не утверждаю, что должно быть именно так, как я показал. Мне интересно, есть ли более простой способ сделать то, что я предлагаю. Поэтому я не повторяю ту же команду. Например, я просто пытаюсь сравнить определенный текст.

+0

Вторая версия недействительна синтаксис для того, что вы хотите достичь, так что вы на самом деле не имеют большого выбора :) Самое лучшее, что вы можете do будет кэшировать объект jQuery в переменной, чтобы вы не продолжали создавать новые экземпляры jQuery –

+0

Очевидно ... Мне просто интересно, есть ли эффективный способ не дублировать одну и ту же команду снова и снова когда я только пытаюсь сравнить текст, например. – Majo0od

+1

Ну, это правильный синтаксис, но семантика сильно отличается от того, что вы, скорее всего, захотите. –

ответ

1

Есть несколько методов, которые могут достичь результата желание

Метод 1 - с помощью indexOf()

var myList = ["something", "somethingElse"]; 
if (myList.indexOf($(this).text()) !== -1) { 
    //ok 
} else { 
    //nok 
} 

Способ 2 - с помощью jQuery.inArray

//This yields to false 
$.inArray(5 + 5, [ "8", "9", "10", 10 + "" ]); 
//This yields to true 
$.inArray(5 + 5, [ "8", "9", "10", 10 ]); 

Причина этого в том, что JavaScript лечит 0, как слабо соответствует ложному

Метод 3 - использование includes()

var a = [1, 2, 3]; 
a.includes(2); // true 
a.includes(4); // false 

Метод 4 - switches

switch (expression) { 
    case value1: 
    //Statements executed when the result of expression matches value1 
    [break;] 
    case value2: 
    //Statements executed when the result of expression matches value2 
    [break;] 
    default: 
    //Statements executed when none of the values match the value of the expression 
    [break;] 
} 
4

Вы можете создать множество вариантов и проверить, если ваше значение в этом массиве.

["something", "something else"].indexOf($(this).text()) != -1 

С ES7 вы можете использовать includes()

["something", "something else"].includes($(this).text()) 
+0

'Array.prototype.includes' на самом деле является методом ES7. – undefined

+0

И с jQuery: ['$ .inArray()'] (http://api.jquery.com/jQuery.inArray/) – simon

+0

@undefined, поэтому ECMAScript 2016 - ES7? –