ES6 - Koleksiyonlar
ES6, iki yeni veri yapısı sunar: Haritalar ve Kümeler.
Maps - Bu veri yapısı, bir anahtarın bir değere eşlenmesini sağlar.
Sets- Kümeler dizilere benzer. Ancak setler, kopyaları teşvik etmez.
Haritalar
Harita nesnesi basit bir anahtar / değer çiftidir. Bir haritadaki anahtarlar ve değerler ilkel veya nesneler olabilir.
Aynı sözdizimi aşağıdadır.
new Map([iterable])
Yinelenebilir parametre, öğeleri bir anahtar / değer çiftinden oluşan yinelenebilir herhangi bir nesneyi temsil eder. Haritalar sıralıdır, yani öğeleri yerleştirme sırasına göre geçerler.
Harita Özellikleri
Sr.No | Özellik ve Açıklama |
---|---|
1 | Map.prototype.size Bu özellik, Map nesnesindeki anahtar / değer çiftlerinin sayısını döndürür. |
Temel Harita işlemlerini anlama
Set () işlevi, Harita nesnesindeki anahtarın değerini ayarlar. Set () işlevi, anahtar ve değeri olmak üzere iki parametre alır. Bu işlev, Harita nesnesini döndürür.
Has () işlevi, belirtilen anahtarın Map nesnesinde bulunup bulunmadığını gösteren bir boole değeri döndürür. Bu işlev parametre olarak bir anahtar alır.
var map = new Map();
map.set('name','Tutorial Point');
map.get('name'); // Tutorial point
Yukarıdaki örnek bir harita nesnesi oluşturur. Haritanın yalnızca bir öğesi vardır. Eleman anahtarı şu şekilde gösterilir:name. Anahtar bir değere eşlenirTutorial point.
Note- Haritalar benzer değerler arasında ayrım yapar ancak farklı veri türleri taşır. Başka bir deyişle, birinteger key 1 farklı kabul edilir string key “1”. Bu kavramı daha iyi anlamak için aşağıdaki örneği düşünün
var map = new Map();
map.set(1,true);
console.log(map.has("1")); //false
map.set("1",true);
console.log(map.has("1")); //true
Çıktı
false
true
set()yöntem aynı zamanda zincirlenebilir. Aşağıdaki örneği düşünün.
var roles = new Map();
roles.set('r1', 'User')
.set('r2', 'Guest')
.set('r3', 'Admin');
console.log(roles.has('r1'))
Çıktı
True
Yukarıdaki örnek, bir harita nesnesini tanımlar. Örnek, anahtar / değer çiftini tanımlamak için set () işlevini zincirler.
get() işlevi, belirtilen anahtara karşılık gelen değeri almak için kullanılır.
Harita yapıcısına bir dizi de aktarılabilir. Ayrıca harita, bir diziyi temsil etmek için yayılma operatörünün kullanımını da destekler.
Misal
var roles = new Map([
['r1', 'User'],
['r2', 'Guest'],
['r3', 'Admin'],
]);
console.log(roles.get('r2'))
Yukarıdaki kod başarılı bir şekilde yürütüldüğünde aşağıdaki çıktı görüntülenir.
Guest
Note - Belirtilen anahtar haritada yoksa get () işlevi undefined döndürür.
Set (), haritada zaten mevcutsa, anahtarın değerinin yerini alır. Aşağıdaki örneği düşünün.
var roles = new Map([
['r1', 'User'],
['r2', 'Guest'],
['r3', 'Admin'],
]);
console.log(`value of key r1 before set(): ${roles.get('r1')}`)
roles.set('r1','superUser')
console.log(`value of key r1 after set(): ${roles.get('r1')}`)
Yukarıdaki kod başarılı bir şekilde yürütüldüğünde aşağıdaki çıktı görüntülenir.
value of key r1 before set(): User
value of key r1 after set(): superUser
Harita Yöntemleri
Sr.No | Yöntem ve Açıklama |
---|---|
1 | Map.prototype.clear () Map nesnesinden tüm anahtar / değer çiftlerini kaldırır. |
2 | Map.prototype.delete (anahtar) Anahtarla ilişkili herhangi bir değeri kaldırır ve Map.prototype.has (key) öğesinin daha önce döndürdüğü değeri döndürür. Map.prototype.has (key) daha sonra yanlış döndürür. |
3 | Map.prototype.entries () Şunları içeren yeni bir Yineleyici nesnesi döndürür an array of Ekleme sırasındaki Harita nesnesindeki her öğe için [anahtar, değer]. |
4 | Map.prototype.forEach (callbackFn [, thisArg]) Aramalar callbackFnHarita nesnesinde bulunan her anahtar / değer çifti için ekleme sırasında bir kez. ForEach'e bir thisArg parametresi sağlanırsa, her geri arama için 'this' değeri olarak kullanılır. |
5 | Map.prototype.keys () İçeren yeni bir Iterator nesnesi döndürür. keys Harita nesnesindeki her öğe için ekleme sırasına göre. |
6 | Map.prototype.values () Şunları içeren yeni bir Yineleyici nesnesi döndürür an array of Ekleme sırasındaki Harita nesnesindeki her öğe için [anahtar, değer]. |
Döngü için ...
Aşağıdaki örnek, for… of döngüsünü kullanarak bir haritanın geçişini gösterir.
'use strict'
var roles = new Map([
['r1', 'User'],
['r2', 'Guest'],
['r3', 'Admin'],
]);
for(let r of roles.entries())
console.log(`${r[0]}: ${r[1]}`);
Yukarıdaki kod başarılı bir şekilde yürütüldüğünde aşağıdaki çıktı görüntülenir.
r1: User
r2: Guest
r3: Admin
Zayıf Haritalar
Zayıf bir harita, aşağıdaki istisnalar dışında bir haritayla aynıdır -
Anahtarları nesneler olmalıdır.
Zayıf bir haritadaki anahtarlar Çöp toplanabilir. Garbage collection bir programdaki referans verilmeyen nesnelerin kapladığı hafızayı temizleme işlemidir.
Zayıf bir harita yinelenemez veya silinemez.
Örnek: Zayıf Harita
'use strict'
let weakMap = new WeakMap();
let obj = {};
console.log(weakMap.set(obj,"hello"));
console.log(weakMap.has(obj));// true
Yukarıdaki kod başarılı bir şekilde yürütüldüğünde aşağıdaki çıktı görüntülenir.
WeakMap {}
true
Setleri
Bir küme, bir ES6 veri yapısıdır. Yinelenenleri içerememesi dışında bir diziye benzer. Başka bir deyişle, benzersiz değerleri depolamanıza izin verir. Kümeler hem ilkel değerleri hem de nesne referanslarını destekler.
Tıpkı haritalar gibi, kümeler de sıralanır, yani öğeler ekleme sıralarında yinelenir. Aşağıdaki sözdizimi kullanılarak bir küme başlatılabilir.
Özellikleri Ayarla
Sr.No | Özellik ve Açıklama |
---|---|
1 | Set.prototype.size Set nesnesindeki değerlerin sayısını döndürür. |
Yöntemleri Ayarla
Sr.No | Yöntem ve Açıklama |
---|---|
1 | Set.prototype.add (değer) Set nesnesine verilen değere sahip yeni bir öğe ekler. Set nesnesini döndürür. |
2 | Set.prototype.clear () Set nesnesindeki tüm öğeleri kaldırır. |
3 | Set.prototype.delete (değer) Değerle ilişkilendirilen öğeyi kaldırır. |
4 | Set.prototype.entries () Şunları içeren yeni bir Yineleyici nesnesi döndürür an array ofSet nesnesindeki her öğe için ekleme sırasına göre [değer, değer]. Bu, Map nesnesine benzer tutulur, böylece her giriş, burada anahtarı ve değeri için aynı değere sahip olur. |
5 | Set.prototype.forEach (callbackFn [, thisArg]) Aramalar callbackFnEkleme sırasında Set nesnesinde bulunan her değer için bir kez. EğerathisArg parametresi forEach'e sağlanır, her geri arama için 'this' değeri olarak kullanılır. |
6 | Set.prototype.has (değer) Set nesnesinde belirli bir değere sahip bir öğenin mevcut olup olmadığını belirten bir boole döndürür. |
7 | Set.prototype.values () İçeren yeni bir Iterator nesnesi döndürür. values ekleme sırasındaki Set nesnesindeki her öğe için. |
Zayıf Set
Zayıf kümeler yalnızca nesneleri içerebilir ve içerdikleri nesneler çöp olarak toplanabilir. Zayıf haritalar gibi, zayıf kümeler de yinelenemez.
Örnek: Zayıf Küme Kullanma
'use strict'
let weakSet = new WeakSet();
let obj = {msg:"hello"};
weakSet.add(obj);
console.log(weakSet.has(obj));
weakSet.delete(obj);
console.log(weakSet.has(obj));
Yukarıdaki kod başarılı bir şekilde yürütüldüğünde aşağıdaki çıktı görüntülenir.
true
false
Yineleyici
Yineleyici, her seferinde bir nesne koleksiyonuna erişmeyi sağlayan bir nesnedir. Hem küme hem de haritanın bir yineleyici döndüren yöntemleri vardır.
Yineleyiciler, next()yöntem. Next () yöntemi çağrıldığında, bir nesne döndürür.'value' ve 'done'özellikleri . 'tamamlandı' boole'dir, bu koleksiyondaki tüm öğeleri okuduktan sonra doğru olarak dönecektir
Örnek 1: Ayarlama ve Yineleme
var set = new Set(['a','b','c','d','e']);
var iterator = set.entries();
console.log(iterator.next())
Yukarıdaki kod başarılı bir şekilde yürütüldüğünde aşağıdaki çıktı görüntülenir.
{ value: [ 'a', 'a' ], done: false }
Set anahtar / değer saklamadığından, değer dizisi benzer anahtar ve değer içerir. Okunacak daha fazla öğe olduğundan, done yanlış olacaktır.
Örnek 2: Ayarlama ve Yineleme
var set = new Set(['a','b','c','d','e']);
var iterator = set.values();
console.log(iterator.next());
Yukarıdaki kod başarılı bir şekilde yürütüldüğünde aşağıdaki çıktı görüntülenir.
{ value: 'a', done: false }
Örnek 3: Ayarlama ve Yineleme
var set = new Set(['a','b','c','d','e']);
var iterator = set.keys();
console.log(iterator.next());
Yukarıdaki kod başarılı bir şekilde yürütüldüğünde aşağıdaki çıktı görüntülenir.
{ value: 'a', done: false }
Örnek 4: Harita ve Yineleyici
var map = new Map([[1,'one'],[2,'two'],[3,'three']]);
var iterator = map.entries();
console.log(iterator.next());
Yukarıdaki kod başarılı bir şekilde yürütüldüğünde aşağıdaki çıktı görüntülenir.
{ value: [ 1, 'one' ], done: false }
Örnek 5: Harita ve Yineleyici
var map = new Map([[1,'one'],[2,'two'],[3,'three']]);
var iterator = map.values();
console.log(iterator.next());
Yukarıdaki kod başarılı bir şekilde yürütüldüğünde aşağıdaki çıktı görüntülenir.
{value: "one", done: false}
Örnek 6: Harita ve Yineleyici
var map = new Map([[1,'one'],[2,'two'],[3,'three']]);
var iterator = map.keys();
console.log(iterator.next());
Yukarıdaki kod başarılı bir şekilde yürütüldüğünde aşağıdaki çıktı görüntülenir.
{value: 1, done: false}