В TypeScript создание уникальных имен в массиве может быть обычным требованием при манипулировании данными или предотвращении дублирования. В этой статье мы рассмотрим различные методы достижения этой цели, используя разговорный язык и практические примеры кода.
Метод 1: использование набора
Самый простой подход — использовать набор, который представляет собой встроенную структуру данных JavaScript, допускающую только уникальные значения. Вот пример:
const names: string[] = ["John", "Jane", "John", "Alice", "Jane"];
const uniqueNames = Array.from(new Set(names));
console.log(uniqueNames);
Метод 2: использование метода фильтра
Другой метод предполагает использование метода filterдля перебора массива и сохранения только уникальных элементов:
const names: string[] = ["John", "Jane", "John", "Alice", "Jane"];
const uniqueNames = names.filter((name, index) => names.indexOf(name) === index);
console.log(uniqueNames);
Метод 3: использование метода сокращения
Метод reduceтакже можно использовать для создания массива уникальных имен путем накопления уникальных значений во время итерации по исходному массиву:
const names: string[] = ["John", "Jane", "John", "Alice", "Jane"];
const uniqueNames = names.reduce((accumulator, currentValue) => {
if (!accumulator.includes(currentValue)) {
accumulator.push(currentValue);
}
return accumulator;
}, []);
console.log(uniqueNames);
Метод 4: использование карты
Вы можете использовать структуру данных карты для хранения имен в качестве ключей, что автоматически отбрасывает повторяющиеся записи:
const names: string[] = ["John", "Jane", "John", "Alice", "Jane"];
const uniqueNames = Array.from(new Map(names.map((name) => [name, name])).values());
console.log(uniqueNames);
Метод 5: использование методов indexOf и LastIndexOf
Классический подход заключается в использовании методов indexOfи lastIndexOfв сочетании для удаления повторяющихся элементов:
const names: string[] = ["John", "Jane", "John", "Alice", "Jane"];
const uniqueNames = names.filter((name, index) => names.indexOf(name) === names.lastIndexOf(name));
console.log(uniqueNames);
Метод 6: использование метода include
Метод includesможно использовать для создания массива уникальных имен, проверяя, существует ли имя перед его добавлением:
const names: string[] = ["John", "Jane", "John", "Alice", "Jane"];
const uniqueNames: string[] = [];
names.forEach((name) => {
if (!uniqueNames.includes(name)) {
uniqueNames.push(name);
}
});
console.log(uniqueNames);
Метод 7: использование пользовательской функции
Для более сложных сценариев вы можете создать пользовательскую функцию, реализующую уникальный алгоритм генерации имени. Вот упрощенный пример:
const names: string[] = ["John", "Jane", "John", "Alice", "Jane"];
const uniqueNames = [];
names.forEach((name) => {
if (!uniqueNames.some((n) => n === name)) {
uniqueNames.push(name);
}
});
console.log(uniqueNames);
В этой статье мы рассмотрели семь различных методов создания уникальных имен в массивах TypeScript. Каждый метод имеет свои преимущества и может применяться в зависимости от конкретных требований вашего проекта. Используя эти методы, вы сможете легко манипулировать данными и устранять дубликаты в массивах.