Junior
Cum se elimină toate duplicatele dintr-un array?
sobes.tech AI
Răspuns de la AI
Există mai multe metode comune:
-
Utilizarea
Set: Cel mai modern și concis mod.Setstochează doar valori unice.const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = [...new Set(arr)]; // uniqueArr va fi [1, 2, 3, 4, 5]const arr = [{ id: 1, name: 'A' }, { id: 2, name: 'B' }, { id: 1, name: 'A' }]; const uniqueArr = Array.from(new Set(arr.map(JSON.stringify))).map(JSON.parse); // Pentru obiecte, trebuie convertite în șiruri pentru comparație corectă în Set // uniqueArr va fi [{ id: 1, name: 'A' }, { id: 2, name: 'B' }] -
Utilizarea
filterșiindexOf: Filtrați array-ul păstrând doar elementele a căror prima apariție corespunde indexului curent.const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index); // uniqueArr va fi [1, 2, 3, 4, 5] -
Utilizarea
reduce: Creați un nou array adăugând elemente dacă nu sunt deja în acumulare.const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = arr.reduce((acc, curr) => { if (!acc.includes(curr)) { acc.push(curr); } return acc; }, []); // uniqueArr va fi [1, 2, 3, 4, 5]const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = arr.reduce((acc, curr) => acc.includes(curr) ? acc : [...acc, curr], []); // Varianta mai scurtă // uniqueArr va fi [1, 2, 3, 4, 5] -
Utilizarea obiectului/Map: Crearea unui obiect temporar sau
Mappentru a urmări elementele deja întâlnite.const arr = [1, 2, 2, 3, 4, 4, 5]; const seen = {}; const uniqueArr = arr.filter(item => seen.hasOwnProperty(item) ? false : (seen[item] = true)); // uniqueArr va fi [1, 2, 3, 4, 5]const arr = [1, 2, 2, 3, 4, 4, 5]; const seen = new Map(); const uniqueArr = arr.filter(item => { if (!seen.has(item)) { seen.set(item, true); return true; } return false; }); // uniqueArr va fi [1, 2, 3, 4, 5]
Metoda cu Set este de obicei cea mai performantă și ușor de citit pentru tipurile primitive. Pentru obiecte, poate fi necesară o logică suplimentară.