@Shimpanze

Как сократить выражение в условном операторе?

if (
  el.nextSibling.nodeName === "DIV" ||
  el.nextSibling.nodeName === "P" ||
  el.nextSibling.nodeName === "SPAN" ||
  el.nextSibling.nodeName === "I" ||
  el.nextSibling.nodeName === "B" ||
  el.nextSibling.nodeName === "PRE" ||
  el.nextSibling.nodeName === "CODE" ||
  el.nextSibling.nodeName === "IMG"
) {...}
  • Вопрос задан
  • 125 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Сложить допустимые значения в массив, посмотреть, присутствует ли в этом массиве проверяемое значение:

const names = [ 'DIV', 'P', 'SPAN', ... ];
if (names.includes(el.nextSibling.nodeName)) {
  ...
Ответ написан
dollar
@dollar
Делай добро и бросай его в воду.
Вообще быстрее будет не перебором массива, пусть и встроенной функцией, а поиск по хешу. Да и в целом, думаю, красивее, хотя дело вкуса:
const hashes = [ DIV:1, P:1, SPAN:1, ... ];
if (hashes[el.nextSibling.nodeName]) {
  ...

Хотя это и экономия на спичках. Но если проверок сотни и тысячи, то хеш-таблица однозначно выгоднее.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы