Короткий спосіб перевірити кілька або умови

Чи існує більш простий спосіб перевірки вартості одного змінного на декілька інших? В даний час я використовую код, подібний до цього:

if(a[i] == a[i-13] || a[i] == a[i+13] || a[i] == a[i-1] || a[i] == a[i+1]){
  //my code
}

Тепер чи є коротший шлях зробити це? Я знаю, що я можу використовувати перемикач , але тоді мені доведеться написати мою функцію кілька разів. Є більш простий спосіб це зробити?

6

3 Відповіді

Вам не потрібно кілька разів писати свою функцію за допомогою перемикача:

switch(a[i]){
  case a[i-13]:
  case a[i+13]:
  case a[i-1]:
  case a[i+1]:
   //This code will run if any of the above cases are true.
}

Цікаво, однак, це приблизно однакове число символів (залежно від того, як ви його форматуєте). Взагалі, оператор switch є менш потужним, ніж явний випадок if , але в цьому випадку я вважаю його більш чітким та менш схильним до помилок.

5
додано

І ще краще:

if (matchesAdjacent(a, i)) {
   //etc.
}

Перемістіть логіку з основного коду в відповідний спосіб.

Це також дозволяє перевірити вашу оцінку (якщо вона ще не гарантована в іншому місці).

2
додано
Це, мабуть, повинно бути matchesAdjacent (a, i) .
додано Автор RoToRa, джерело
@ Ротора Лол, ну. Виправлено - спасибі.
додано Автор Dave Newton, джерело

Ні. Проте наступний виглядає неймовірніше:

if(a[i] == a[i-13] || 
   a[i] == a[i+13] || 
   a[i] == a[i-1] || 
   a[i] == a[i+1]
) {
  //my code
}
1
додано
ІТ КПІ - JavaScript
ІТ КПІ - JavaScript
504 учасників

співтовариство javascript розробників в Telegram