Junior
Bir massivdən bütün təkrarlamaları necə silmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Müxtəlif yaygın üsullar mövcuddur:
-
Setistifadə etmək: Ən müasir və qısa üsul.Setyalnız unikal dəyərləri saxlayır.const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = [...new Set(arr)]; // uniqueArr [1, 2, 3, 4, 5] olacaqconst 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); // Ob'ektlər üçün, düzgün müqayisə üçün onları sətirlərə çevirmək lazımdır // uniqueArr [{ id: 1, name: 'A' }, { id: 2, name: 'B' }] olacaq -
filtervəindexOfistifadə etmək: Array-i filtr etmək, ilk tapılma indeksinə uyğun olan elementləri saxlamaq.const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index); // uniqueArr [1, 2, 3, 4, 5] olacaq -
reduceistifadə etmək: Yeni array yaratmaq, elementlər hələ mövcud deyilsə əlavə etmək.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 [1, 2, 3, 4, 5] olacaqconst arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = arr.reduce((acc, curr) => acc.includes(curr) ? acc : [...acc, curr], []); // Daha qısa variant // uniqueArr [1, 2, 3, 4, 5] olacaq -
Obyekt/Map istifadə etmək: Artıq rast gəlinmiş elementləri izləmək üçün müvəqqəti obyekt və ya
Mapyaratmaq.const arr = [1, 2, 2, 3, 4, 4, 5]; const seen = {}; const uniqueArr = arr.filter(item => seen.hasOwnProperty(item) ? false : (seen[item] = true)); // uniqueArr [1, 2, 3, 4, 5] olacaqconst 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 [1, 2, 3, 4, 5] olacaq
Set istifadə edən metod adətən primitiv tiplər üçün ən səmərəli və oxunaqlı hesab olunur. Ob'ektlər üçün əlavə loqika tələb oluna bilər.