У меня проблема, когда мне нужно отфильтровать массив повторяющихся значений. EG: [1,2,3,3,3,4] -> [1,2,3,4]
В настоящее время я написал следующий код, который работает, но я не думаю, что избыточности достаточно.
const deduper = (arrayToDedupe) =>
Object.values(
Object.assign({}, [
...new Set(
[...new Set(arrayToDedupe)]
.filter((element, index, array) => index === array.indexOf(element))
.reduce((acc, elementv2) => {
if (acc.includes(elementv2)) {
return acc;
} else {
acc.push(elementv2);
return acc;
}
}, [])
.map((elementv3, indexv3, arrayv3) => {
if (indexv3 === arrayv3.indexOf(elementv3)) {
return elementv3;
} else {
return undefined;
}
})
.filter((x) => x)
),
])
)
.sort()
.map((element, index, array) => {
if (array[index + 1] === element) return undefined;
return element;
})
.filter((x) => x);
Есть ли способ действительно действительно гарантировать несомненно, что в возвращаемом массиве не будет дубликатов. Нужно ли мне добавлять дополнительные методы связанных массивов?