В Angular работа с массивами — обычная задача. Иногда вы можете столкнуться с ситуациями, когда вам необходимо удалить повторяющиеся значения из массива. В этой статье блога мы рассмотрим различные методы достижения этой цели в Angular, приведя примеры кода и разговорные объяснения каждого подхода.
Методы удаления повторяющихся значений в массиве:
- Метод с использованием Set:
Один из самых простых и эффективных способов удаления дубликатов из массива — использование структуры данных Set. Set автоматически удаляет повторяющиеся значения, что позволяет нам преобразовать массив в Set, а затем обратно в массив.
const arrayWithDuplicates = [1, 2, 3, 3, 4, 4, 5];
const uniqueArray = Array.from(new Set(arrayWithDuplicates));
console.log(uniqueArray); // Output: [1, 2, 3, 4, 5]
- Метод с использованием filter():
Метод filter() предоставляет элегантный способ удаления дубликатов из массива, проверяя, соответствует ли индекс каждого элемента первому вхождению. Этот метод хорошо работает для массивов, содержащих примитивные значения.
const arrayWithDuplicates = [1, 2, 3, 3, 4, 4, 5];
const uniqueArray = arrayWithDuplicates.filter((value, index, self) => {
return self.indexOf(value) === index;
});
console.log(uniqueArray); // Output: [1, 2, 3, 4, 5]
- Метод с использованием сокращения():
Метод сокращения() позволяет нам перебирать массив и создавать новый массив без дубликатов. Он использует пустой массив в качестве аккумулятора и перед добавлением проверяет, существует ли значение.
const arrayWithDuplicates = [1, 2, 3, 3, 4, 4, 5];
const uniqueArray = arrayWithDuplicates.reduce((accumulator, currentValue) => {
if (!accumulator.includes(currentValue)) {
accumulator.push(currentValue);
}
return accumulator;
}, []);
console.log(uniqueArray); // Output: [1, 2, 3, 4, 5]
- Метод с использованием ES6 include() и indexOf():
Этот метод похож на подход filter(), но использует метод include() для проверки, существует ли значение в массиве. Затем он использует метод indexOf() для определения первого вхождения.
const arrayWithDuplicates = [1, 2, 3, 3, 4, 4, 5];
const uniqueArray = arrayWithDuplicates.filter((value, index, self) => {
return self.indexOf(value) === self.lastIndexOf(value);
});
console.log(uniqueArray); // Output: [1, 2, 3, 4, 5]