for (let i = 1; i < arr.length; i++) {
if (arr[i] === arr[i - 1]) {
for (let j = i--; ++j < arr.length; arr[j - 1] = arr[j]) ;
arr.pop();
}
}
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));
arr.length -= arr.reduce((acc, n, i, a) => (
a[i - acc] = n,
acc + (i && n === a[i - 1 - acc])
), 0);