Middle+
Կատարեք կրկնօրինակների ֆիլտրացման ֆունկցիա զանգվածից: Ինչու Set-ը չի հարմար օբյեկտների համար?
sobes.tech AI
Պատասխան AI-ից
Для фильтрации дубликатов из массива можно использовать объект Set, который хранит только уникальные значения. Но для объектов Set не подходит, потому что Set сравнивает объекты по ссылке, а не по содержимому. То есть два разных объекта с одинаковыми полями будут считаться разными элементами.
Пример функции фильтрации дубликатов для примитивных значений:
function uniqueArray(arr) {
return [...new Set(arr)];
}
Для объектов нужно реализовать сравнение по содержимому, например, с помощью сериализации в JSON или глубокого сравнения:
function uniqueObjects(arr) {
const seen = new Set();
return arr.filter(item => {
const serialized = JSON.stringify(item);
if (seen.has(serialized)) {
return false;
} else {
seen.add(serialized);
return true;
}
});
}
Этот способ работает, если порядок ключей и типы данных в объектах стабильны. Для более сложных случаев используют глубокое сравнение или специализированные библиотеки.