Junior
Hoe verwijder je alle duplicaten uit een array?
sobes.tech AI
Antwoord van AI
Er zijn verschillende gangbare methoden:
-
Gebruik van
Set: De meest moderne en beknopte manier.Setslaat alleen unieke waarden op.const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = [...new Set(arr)]; // uniqueArr wordt [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); // Voor objecten moet je ze omzetten naar strings voor correcte vergelijking in Set // uniqueArr wordt [{ id: 1, name: 'A' }, { id: 2, name: 'B' }] -
Gebruik van
filterenindexOf: Filter de array, waarbij alleen de elementen blijven waarvan de eerste verschijning overeenkomt met de huidige index.const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index); // uniqueArr wordt [1, 2, 3, 4, 5] -
Gebruik van
reduce: Maak een nieuwe array door elementen toe te voegen als ze nog niet in de accumulator zitten.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 wordt [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], []); // Kortere variant // uniqueArr wordt [1, 2, 3, 4, 5] -
Gebruik van object/Map: Maak een tijdelijk object of
Mapom al ontmoetenelementen bij te houden.const arr = [1, 2, 2, 3, 4, 4, 5]; const seen = {}; const uniqueArr = arr.filter(item => seen.hasOwnProperty(item) ? false : (seen[item] = true)); // uniqueArr wordt [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 wordt [1, 2, 3, 4, 5]
De methode met Set is over het algemeen de meest efficiënte en leesbare voor primitieve types. Voor objecten kan extra logica nodig zijn.