dmc1989
@dmc1989

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

Есть ли какой-то трюк, чтобы уместить все в 1 строке?
const firstNonConsecutive = arr => {
  const result = arr.filter((el, index) => arr[index - 1] && arr[index - 1] !== el - 1)[0];
  return result !== undefined ? result : null;
};
  • Вопрос задан
  • 163 просмотра
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Прежде чем упрощать, следует исправить - тот код, что есть, выдаёт некорректные результаты, если среди элементов массива есть 0 (например, для [ -1, 0, 0.1, 2 ] выдаёт 2 вместо 0.1). В первой части условия следует вместо предыдущего элемента массива смотреть индекс текущего - единственным неподходящим является нулевой.

Если планируете получать единственное значение, то фильтрация плюс извлечение нулевого элемента результата избыточны - хватит метода find. Для подмены undefined на null вообще не нужно никаких проверок делать - с этим справится nullish coalescing. Так что вот:

const firstNonConsecutive = arr => arr.find((n, i, a) => i && a[i - 1] !== n - 1) ?? null;
Ответ написан
Комментировать
dmc1989
@dmc1989 Автор вопроса
const firstNonConsecutive = arr => ((res = arr.filter((el, index) => +arr[index - 1] && arr[index - 1] !== el - 1)[0]) => res !== undefined ? res : null)();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Dr_Elvis
@Dr_Elvis
В гугле забанен
const firstNonConsecutive = arr => {const result = arr.filter((el, index) => arr[index - 1] && arr[index - 1] !== el - 1)[0]; return result !== undefined ? result : null;};
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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