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

Допустим есть массив

[3, 2, 2, 1, 5, 6, 6, 6, 0, 7, 7, 7, 7, 4, 5, 5, 5]

Как удалить парные повторения, которые идут друг за другом и сделать на выходе массив

[3, 1, 5, 6, 0, 4, 5]

Ответы (2 шт):

Автор решения: Zhihar

алгоритм:

  1. идете в цикле по элементам массива
  2. если элемент arr[i] равен элементу arr[i+1] или равен элементу arr[i - 1] ничего не делаете иначе добавляете элемент в новый массив
  3. при 2) учесть граничные элементы и не выполнять одну или другую проверку в зависимости от того первый это или последний элемент массива
→ Ссылка
Автор решения: Aziz Umarov

вот так

let skip = false;
let arr = [3, 2, 2, 1, 5, 6, 6, 6, 0, 7, 7, 7, 7, 4, 5, 5, 5];
let result = arr.reduce(
  (acc, item, index) => {
    if (!skip){
      if (item == arr[index + 1]) {
        skip = true; 
      } else {
        acc.push(item);
      }
    } else {
      skip = false;
    }
    return acc;
  }, []);
  
 console.log(result);

вот покороче

let result = [3, 2, 2, 1, 5, 6, 6, 6, 0, 7, 7, 7, 7, 4, 5, 5, 5].reduce((r,i,n,m) => {r.k||i===m[n + 1]?r.k=!r.k:r.s.push(i);return r;}, {s: [],k:false}).s;
  
 console.log(result);

→ Ссылка