Как удалить из массива элементы, которые повторяются парно
Допустим есть массив
[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
→ Ссылка
алгоритм:
- идете в цикле по элементам массива
- если элемент
arr[i]равен элементуarr[i+1]или равен элементуarr[i - 1]ничего не делаете иначе добавляете элемент в новый массив - при 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);