Junior
Bir diziden tüm tekrarları nasıl kaldırabilirsiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Mevcut birkaç yaygın yöntem vardır:
-
SetKullanımı: En modern ve özlü yöntemdir.Setyalnızca benzersiz değerleri tutar.const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = [...new Set(arr)]; // uniqueArr [1, 2, 3, 4, 5] olacaktırconst 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); // Nesneler için, doğru karşılaştırma için dizilere dönüştürmek gerekir // uniqueArr [{ id: 1, name: 'A' }, { id: 2, name: 'B' }] olacaktır -
filterveindexOfKullanımı: Diziyi, ilk ortaya çıkışlarının şu anki indeksle eşleştiği öğeleri bırakarak filtreleme.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] olacaktır -
reduceKullanımı: Yeni bir dizi oluşturarak, öğeleri henüz eklenmediyse ekleme.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] olacaktırconst arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = arr.reduce((acc, curr) => acc.includes(curr) ? acc : [...acc, curr], []); // Daha kısa bir alternatif // uniqueArr [1, 2, 3, 4, 5] olacaktır -
Nesne/Map Kullanımı: Daha önce karşılaşılan öğeleri izlemek için geçici nesne veya
Mapoluşturma.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] olacaktırconst 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] olacaktır
Set kullanımı genellikle primitif tipler için en performanslı ve okunabilir yöntemdir. Nesneler için ek mantık gerekebilir.