Anahtar/değer çiftlerini ve depolanacak dizileri depolamak için Nesne değişmez değerlerini kullanabilirsiniz ama yinelenebilir değer koleksiyonları. ES6, özelleştirilmiş veri yapıları da kullanıma sunuyor kullanım alanlarına uygun hale getirmek için: Anahtar/değer çiftleri için eşleme ve değer atfederler.
Harita
Harita, bilgileri anahtar/değer çiftleri olarak depolayan, tekrarlanabilir bir veri yapısıdır. benzerdir. Değişmez Nesne değerlerinin aksine, Haritalar her iki değere de izin verir ve tuşların herhangi bir veri türüne sahip olmasını sağlayabilirsiniz ve sıralama öğeleri bir haritaya korunduğundan emin olun.
Harita oluşturmak için Map()
oluşturucuyu kullanın:
const myMap = new Map();
myMap;
> Map(0)
Diziye (veya bir dizi) benzeyen söz dizimi kullanarak bir Haritayı önceden içeren herhangi bir yiteratör nesne) iki öğeden oluşan dizi benzeri nesnelerdir. Bunların her birindeki ilk öğe iki öğeli veri yapıları anahtar kelime, ikinci öğe ise değer bu anahtarla ilişkilendirildiğinden emin olun. Bunun en basit biçimi, fiilen Bu durumda her bir eleman, iki öğeden oluşan bir dizidir: anahtar ve Harita'ya eklenecek öğenin değeri:
const myMap = new Map([
[ "myKey", "A string value" ],
[ "mySecondKey", 500 ],
[ "myThirdKey", true ]
]);
myMap;
> Map(3) {'myKey' => 'A string value', 'mySecondKey' => 500, 'myThirdKey' => true}
Yine, Harita nesnesi bir nesne değişmez değerinden farklı bir işleve sahiptir ki her iki değer de Ayrıca anahtarlar da herhangi bir veri türünü ve değeri alabilir:
const notAFunction = () => console.log( "function" );
const myMap = new Map([
[ null, 0 ],
[ false, "This is false" ],
[ undefined, "No defined value" ],
[ NaN, "Not a number" ]
]);
myMap;
> Map(4) {null => 0, false => 'This is false', undefined => 'No defined value', NaN => 'Not a number'}
Harita öğelerini almak, ayarlamak veya silmek için Map
öğesinden devralınan yöntemleri kullanın
oluşturucu:
const myMap = new Map();
myMap;
> Map(0)
myMap.set( "myKey", "My value." );
myMap.has( "myKey" );
> true
myMap.get( "myKey" );
"My value."
myMap.delete( "myKey" );
myMap;
> Map(0)
Bir Haritadaki anahtarlar benzersizdir, yani aynı bir anahtar ayarlanırsa önceden depolanan anahtar/değer çifti:
const myMap = new Map([ [ "myKey", "A string value" ] ]);
myMap.set( "myKey", 500 );
myMap;
> Map(1) {'myKey' => 500}
Nesnelerde olduğu gibi, const
ve
ve harita üzerinde değişiklik yapabilirsiniz. Ancak diğer const
kullanım alanlarında olduğu gibi
değiştirin veya silin:
const myMap = new Map();
myMap.set( "myKey", "A string value" );
myMap;
> Map(1) {'myKey' => 500}
WeakMap
WeakMap, içinde "zayıf" bulunan bir haritadır referanslar Bunlar Nesnelere veya Simgelere referans olmalıdır veya global Sembol kaydına eklenmemiş uygulamalardır.
Bir WeakMap oluşturmak için WeakMap()
oluşturucuyu kullanın:
const myWeakMap = new WeakMap();
myWeakMap;
> WeakMap(0)
WeakMap söz dizimi Harita'ya benzer, ancak WeakHaritalar iterable [iterable] nesne veya simge dışındaki herhangi bir değerin anahtar olarak kullanılması, söz dizimi hatasına neden olur. Hayır olduğunda Bir anahtara referanslar varsa o nesnenin veya simgenin ve Her ikisi de çöp toplama için uygundur.
Bu, bir nesneyle ilişkili meta verilerin anahtar olarak nesneye başvuruyu kullanarak bir Weak Map. Başka referans yoksa Nesne bu Nesnede mevcut değilse ve Nesne bellekten kaldırıldığında, meta veriler de kaldırılır.
Ayarla
Küme, bir diziye benzeyen benzersiz değerlerin yinelenebilir bir koleksiyonudur. Bununla birlikte, bir Küme yalnızca benzersiz değerler içerebilir. Haritada olduğu gibi, Küme, eklenen sıralama öğelerinin korunmasını sağlar.
Küme oluşturmak için Set()
oluşturucuyu kullanın:
const mySet = new Set();
mySet;
> Set []
Dizi değişmez değerinden de Küme oluşturabilirsiniz:
const mySet = new Set([ 1, 2, 3 ]);
mySet;
> Set(3) [ 1, 2, 3 ]
Bir Küme yinelenen öğelere izin vermediği için, aynı değere sahip birden çok örnek içeren dizi ise yalnızca ilk örneği:
const mySet = new Set([ 1, 2, 3, 2 ]);
mySet;
> Set(3) [ 1, 2, 3 ]
Bir kümeye öğe eklemek veya gruptan öğe kaldırmak için Set
öğesinden devralınan yöntemleri kullanın
kurucusu. Bu yöntemler, öğenin değerine bağlı olarak bir öğeye etki eder
bir dizine referans vermek yerine kendisini dizine ekler:
const mySet = new Set();
mySet.add( "My value." );
mySet;
> Set [ "My value." ]
mySet.has( "My value." );
> true
mySet.delete( "My value." );
mySet;
> Set []
Gruplar, dizine eklenmemiş koleksiyonlar olmasa da bir Kümedeki öğeler yinelenen sırası. Bir Kümeye yinelenen öğe değeri ekleme girişimleri: atlandı (orijinal kampanya siparişi korunarak):
const mySet = new Set([ 1, 2, 3 ]);
mySet;
> Set(3) [ 1, 2, 3 ]
mySet.add( 2 );
> Set(3) [ 1, 2, 3 ]
Bir Kümeden Dizi oluşturmak için, Array.from()
yöntemini kullanın ya da
söz dizimi:
const mySet = new Set([ 1, 2, 3 ]);
const myArray = Array.from( mySet );
myArray;
> Array(3) [ 1, 2, 3 ]
[ ...mySet ];
> Array(3) [ 1, 2, 3 ]
WeakSet
WeakSet yalnızca çöp toplanabilir değerleri içeren bir gruptur, (ör. Nesnelere veya Simgelere verilen referanslar) veya global Sembol kaydına eklenmemiş uygulamalardır.
Bir WeakSet oluşturmak için WeakSet()
oluşturucuyu kullanın:
const myWeakSet = new WeakSet();
myWeakSet;
> WeakSet []
WeakSet söz dizimi Set'e benzer ancak WeakSet iterable olup olmadığını nesne veya simge dışındaki herhangi bir değer söz dizimi hatasına neden olur. WeakMap'te olduğu gibi yeni referans olmadığında bir WeakSet tarafından başvuruda bulunulan bir değer bulunursa bu değer çöp toplama.
Bu, belirli bir veri türünün tek, yinelemeli bir koleksiyonunun toplanması gibi kullanım alanlarına olanak tanır. anlamına gelir. WeakSet, ilişkili öğe WeakSet'ten de kaldırılır.
Öğrendiklerinizi sınayın
Aşağıdakiler göz önünde bulundurulduğunda:
const myMap = new Map([ [ "myKey", "My string" ] ]); myMap.set( "myKey", 100 );
myMap
sonucu ne döndürür?
100
undefined
"My string"