Эффективный способ использования оператора If для проверки значения не используется в Javascript или JQuery - PullRequest
2 голосов
/ 31 марта 2020

У меня есть четыре текстовых поля, скажем textbox1, textbox2, textbox3, textbox4 в моем HTML do c при нажатии кнопки для btn1 Я хочу убедиться, что все значения, введенные во всех четырех текстовых полях, различны и уникальны. Для чего я использую условие if.

$("#btn1").on("click", function(){

    if($("#textbox1").val() === $("#textbox2").val() || 
       $("#textbox1").val() === $("#textbox3").val() ||
       $("#textbox1").val() === $("#textbox4").val() ||
       $("#textbox2").val() === $("#textbox3").val() || 
       $("#textbox2").val() === $("#textbox4").val() ||
       $("#textbox3").val() === $("#textbox4").val() ) 
    {  alert("Values are not unique please check them."); }

});

Есть ли способ короче этого?

Ответы [ 2 ]

3 голосов
/ 31 марта 2020

Вы можете сделать набор с массивом. Набор удаляет дубликаты, поэтому, если длина не совпадает, были дубликаты.

function checkIfArrayIsUnique(myArray) {
  return myArray.length === new Set(myArray).size;
}

$("button").on("click", function () {
  var vals = $(".tb").map( function () { return this.value }).get()
  console.log(checkIfArrayIsUnique(vals))
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<input type="text" class="tb" />
<input type="text" class="tb" />
<input type="text" class="tb" />
<input type="text" class="tb" />

<button type="button">Check</button>

Возможно, вы захотите «нормализовать» значения, если вы ищете уникальный текст без регистра. Пример "aaa" против "AAA" ....

0 голосов
/ 31 марта 2020

Самый простой способ проверки уникальности.

  • На кнопке нажмите pu sh все значения в массиве
  • Проверка дубликатов в массиве Использование Карта
  • Если число дубликатов больше 0, его средние значения дублируются.

Например

let fruits = ['Apple', 'apple', 'AppLE', 'Orange', 'ORANGE'];
let duplicates = new Map(fruits.map(s => [s.toLowerCase(), s]));

console.log([...duplicates.values()]);

... является оператором спреда подробнее

...