@ignis21

Как удалить элемент из массива, если он повторяет предыдущий?

Есть массив в котором подряд идут разные значения, как удалить следующие значение если оно повторяет предыдущее?
  • Вопрос задан
  • 160 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Собрать новый массив:

const newArr = arr.filter((n, i, a) => !i || a[i - 1] !== n);

Удалить из существующего массива:

let numDeleted = 0;

for (let i = 0, prev = !arr[0]; i < arr.length; prev = arr[i++]) {
  arr[i - numDeleted] = arr[i];
  numDeleted += arr[i] === prev;
}

arr.length -= numDeleted;

или

for (let i = arr.length; --i > 0;) {
  if (arr[i] === arr[i - 1]) {
    arr.splice(i, 1);
  }
}

или

arr.reduceRight((_, n, i, a) => i && n === a[i - 1] && a.splice(i, 1), null);

или

arr.splice(0, arr.length, ...arr.filter((n, i, a) => !i || a[i - 1] !== n));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Petja
@Petja
Веб Мастер: *nix, js, php, html, css, design
reduce
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы