Bir JavaScript Dizisinden Yinelenenleri Kaldırma

Bir JavaScript Dizisinden Yinelenenleri Kaldırma
Bir JavaScript Dizisinden Yinelenenleri Kaldırma

JavaScript'te Dizi Benzersizliğini Anlamak

JavaScript'te bir dizinin yalnızca benzersiz değerler içermesini sağlamak çeşitli uygulamalar için çok önemli olabilir. Bunu başarmanın birden fazla yolu olsa da bazı yöntemler, sıfırların varlığı gibi belirli koşullar altında başarısız olabilir.

Bu yazıda, bir dizideki kopyaları kaldırmak için bir prototip komut dosyasını inceleyeceğiz. Sıfır değerlerle sahip olduğu sorunları tespit edip daha güvenilir bir çözümle karşılaştıracağız. Bu farklılıkları anlayarak, dizi benzersizliğini JavaScript'te nasıl daha etkili bir şekilde ele alacağınızı öğreneceksiniz.

Emretmek Tanım
new Set() Her türdeki benzersiz değerleri saklamanıza olanak tanıyan bir Set nesnesi oluşturur.
[...new Set(array)] Bir Kümeyi tekrar benzersiz değerler dizisine dönüştürmek için yayılma operatörünü kullanır.
Array.prototype.getUnique Diziden benzersiz değerler çıkarmak için Array prototipinde yeni bir yöntem tanımlar.
uniqueElements[this[i]] = this[i] Benzersizliği sağlamak için her öğeyi bir nesnede anahtar olarak saklar.
for (let key in uniqueElements) Sonuç dizisini oluşturmak için benzersizElements nesnesinin anahtarları üzerinde yinelenir.
const uniqueElements = {} Benzersiz öğeleri anahtar olarak depolamak için boş bir nesneyi başlatır.

JavaScript Dizilerindeki Kopyalar Nasıl Kaldırılır

Sunduğumuz ilk komut dosyası şunu kullanıyor: new Set() Dizinin benzersizliğini sağlamak için JavaScript'teki nesne. A Set her değerin benzersiz olması gereken bir değerler koleksiyonudur. Bir diziyi bir diziye geçirerek Set, yinelenen değerleri otomatik olarak filtreleriz. Dönüştürmek için Set diziye geri döndüğümüzde spread operatörünü kullanırız [...new Set(array)]. Bu yöntem kısa ve özdür ve istenen sonucu verimli bir şekilde elde etmek için JavaScript'in yerleşik işlevlerinden yararlanır.

Örneğin, sıfırlar da dahil olmak üzere yinelenen sayılara sahip bir diziniz varsa, örneğin [1, 2, 2, 3, 4, 4, 5, 0, 0], işlev getUniqueValues(array) yalnızca benzersiz değerlere sahip bir dizi döndürecektir: [1, 2, 3, 4, 5, 0]. Bu yöntem basittir ve sıfırlar da dahil olmak üzere her türlü öğeyi herhangi bir sorun olmadan işler.

Benzersiz Dizi Değerlerini Sağlamak İçin Özel Bir Yöntem

İkinci komut dosyası, özel bir yöntemi tanımlar. Array.prototype isminde getUnique. Bu yöntem benzersiz öğeleri izlemek için bir nesne kullanır. Yöntem içerisinde ilk önce boş bir nesneyi başlatıyoruz const uniqueElements = {} ve boş bir dizi const resultArray = []. Daha sonra bir dizi kullanarak yineliyoruz for döngüde her bir öğe anahtar olarak depolanır. uniqueElements tüm anahtarların benzersiz olmasını sağlamak için nesne.

Doldurduktan sonra uniqueElements nesne, başka bir tane kullanıyoruz for...in nesnenin tuşları üzerinde yineleme yapmak ve her benzersiz anahtarı resultArray. Son olarak, yöntem şunu döndürür: resultArrayyalnızca benzersiz değerler içeren . Bu yöntem, yalnızca yerleşik işlevlere dayanmadan benzersizliğin manuel olarak nasıl yönetileceğini ve uygulanacağını gösterdiğinden ve JavaScript'teki veri yapılarının işlenmesine ilişkin daha derin bir anlayış sağladığından özellikle öğreticidir.

JavaScript Dizilerinde Benzersiz Değerlerin Sağlanması

Setleri Kullanarak JavaScript Yöntemi

function getUniqueValues(array) {
  return [...new Set(array)];
}

// Example usage:
const numbers = [1, 2, 2, 3, 4, 4, 5, 0, 0];
const uniqueNumbers = getUniqueValues(numbers);
console.log(uniqueNumbers);

Özel İşlevli Bir Dizideki Yinelenenleri Kaldırma

JavaScript Özel Prototip Yöntemi

Array.prototype.getUnique = function() {
  const uniqueElements = {};
  const resultArray = [];
  for (let i = 0; i < this.length; i++) {
    uniqueElements[this[i]] = this[i];
  }
  for (let key in uniqueElements) {
    resultArray.push(uniqueElements[key]);
  }
  return resultArray;
};

// Example usage:
const numbers = [1, 2, 2, 3, 4, 4, 5, 0, 0];
const uniqueNumbers = numbers.getUnique();
console.log(uniqueNumbers);

Dizi Veri Tekilleştirme Tekniklerine Derinlemesine Bakış

JavaScript'te bir dizideki kopyaları kaldırmak için bir diğer önemli teknik, filter yöntemi ile kombinasyon halinde indexOf yöntem. Bu yöntem, dizi üzerinde yineleme yapmayı ve yalnızca ilk oluşumu geçerli konumlarıyla eşleşen öğeleri dahil etmeyi içerir. Bu, her öğenin elde edilen diziye yalnızca bir kez dahil edilmesini sağlayarak kopyaları etkili bir şekilde ortadan kaldırır.

Örneğin, bir dizi düşünün [1, 2, 2, 3, 4, 4, 5, 0, 0]. Kullanarak array.filter((item, index) => array.indexOf(item) === index), yinelenen değerleri filtreleyebilirsiniz. Bu yaklaşım, geçerli öğenin dizininin o öğenin ilk oluşum dizini ile aynı olup olmadığını kontrol ederek çalışır. Eğer öyleyse, öğe benzersizdir ve yeni diziye dahil edilmiştir.

JavaScript Dizisi Tekilleştirme Hakkında Sık Sorulan Sorular

  1. Bir dizideki kopyaları kaldırmanın en etkili yolu nedir?
  2. Bir kullanarak Set O(n) zaman karmaşıklığına sahip olduğundan en etkili yollardan biridir.
  3. kullanabilir miyim? filter kopyaları kaldırma yöntemi?
  4. Evet birleştiriyorum filter ile indexOf kopyaları kaldırmak için yaygın bir yaklaşımdır.
  5. Neden prototype yöntem sıfırla başarısız mı oluyor?
  6. Orijinal komut dosyası sıfırla başarısız oluyor çünkü for (i = 0; e = this[i]; i++) sıfırda durur ve bunu yanlış olarak yorumlar.
  7. Benzersizlik için bir dizideki farklı veri türlerini nasıl işleyebilirim?
  8. Bir kullanarak Set her değerin benzersiz olmasını sağlayarak farklı veri türlerini verimli bir şekilde işler.
  9. Kullanmanın faydası nedir new Set() diğer yöntemlere göre mi?
  10. new Set() özlüdür ve ek mantık gerektirmeden her türlü değeri işler.
  11. Benzersiz yöntemi tüm dizilere ekleyebilir miyim?
  12. Evet, bir yöntem ekleyerek Array.prototype, bunu tüm dizilerin kullanımına sunabilirsiniz.
  13. Modifiye etmenin olumsuz tarafı nedir? Array.prototype?
  14. Değiştiriliyor Array.prototype diğer komut dosyalarının da onu değiştirmesi durumunda çakışmalara yol açabilir.
  15. Orijinal diziyi değiştirmeden benzersizliği sağlamanın bir yolu var mı?
  16. Evet, gibi yöntemler new Set() Ve filter orijinali koruyarak yeni bir dizi oluşturun.

JavaScript Dizisi Tekilleştirme Hakkında Son Düşünceler

Dizilerdeki kopyaları kaldırmaya yönelik farklı teknikleri anlayarak, özel kullanım durumunuz için en uygun yöntemi seçebilirsiniz. Kullanılıp kullanılmayacağı Set basitlik ve verimlilik için veya daha derin bir anlayış için özel yöntemler için, bu yaklaşımlarda uzmanlaşmak JavaScript becerilerinizi geliştirir. Sıfır değerler gibi özel durumların ele alınması, çözümlerinizde sağlamlık sağlar.