Bu yazımızda javascript e ES6 ile dahil edilen 4 farklı veri yapısını göreceğiz.
Map
Map veri yapısı ile belirli anahtarlara göre değerler ekleyerek bu değerleri belirlediğimiz anahtarla çekme yada silme gibi işlemleri yapabiliyoruz.
map.set ve map.get
map.set ile isim anahtarına ahmet değerini atadık. ve map.get ilede isim anahtarı ile değere ulaştık.
let map = new Map();
map.set('isim','ahmet');
console.log(map.get('isim'));
çıktı:
ahmet
Tanımlanmamış bir değer çağırıldığından undefined olarak döner.
let map = new Map();
console.log(map.get('isim'));
çıktı:
undefined
map.has ve map.delete
Bir verinin olup olmadığının kontrolünü anahtar değeri ile map.has ile yapıyoruz. Bir veriyi silme işlemini ise anahtar değerini vererek map.delete ile yapıyoruz.
let map = new Map();
map.set('isim','ahmet');
console.log(map.has('isim'));
çıktı:
true
let map = new Map();
map.set('isim','ahmet');
map.delete('isim');
console.log(map.has('isim'));
çıktı:
false
map.size ve map.clear
map.size ile Map içerisinde tanımlanan veri sayısını görebiliyoruz. map.clear ile Map içerisindeki tüm verileri silebiliyoruz.
let map = new Map();
map.set('meyve','elma');
map.set('sebze','biber');
console.log(map.size);
çıktı:
2
let map = new Map();
map.set('meyve','elma');
map.set('sebze','biber');
map.clear();
console.log(map.size);
çıktı:
0
Bir Map içerisine verileri değişkene atanması anında atayabiliyoruz.
let map = new Map([
['meyve','elma'],
['sebze' ,'biber']
]);
console.log(map.size);
çıktı:
2
Bir Map de anahtar değeri string dışında object,function yada NaN olan bir veride olabilir.
const object = {};
const func = () => 1;
const nan = NaN;
const num = 1;
let map = new Map([
[object,'object'],
[func ,'function'],
[nan ,'NaN'],
[num,'number']
]);
console.log(map.get(object));
console.log(map.get(func));
console.log(map.get(nan));
console.log(map.get(num));
çıktı:
object
function
NaN
number
map.keys,map.values ve map.entries
Bir Map in anahtar değerlerini çekmek istiyorsak .keys fonksiyonunu for..of ile çağırarak görebiliriz.
const object = {};
const func = () => 1;
const nan = NaN;
const num = 1;
let map = new Map([
[object,'object'],
[func ,'function'],
[nan ,'NaN'],
[num,'number']
]);
for(let key of map.keys())
console.log(key);
çıktı:
{}
() => 1
null
1
Map in değerlerine erişmek istiyorsak .values fonksiyonunu kullanıyoruz.
const object = {};
const func = () => 1;
const nan = NaN;
const num = 1;
let map = new Map([
[object,'object'],
[func ,'function'],
[nan ,'NaN'],
[num,'number']
]);
for(let value of map.values())
console.log(value);
çıktı:
object
function
NaN
number
Bir Map in hem anahtar hem değerine erişmek istiyorsak .entries fonksiyonunu kullanıyoruz.
const object = {};
const func = () => 1;
const nan = NaN;
const num = 1;
let map = new Map([
[object,'object'],
[func ,'function'],
[nan ,'NaN'],
[num,'number']
]);
for(let [key,value] of map.entries())
console.log(key + ' ' + value);
çıktı:
{} object
() => 1 function
NaN nan
1 number
let [key,value] önceki yazılarda gördüğümüz veri tanımlama ile bir özellik. let entry şeklinde tanımlayıp entry[0] ve entry[1] şeklinde erişerekde kullanabiliriz.
WeakMap
WeakMap Map in .get,.set,.has ve .delete fonksiyonlarını destekler. Ancak anahtar değer olarak sadece object,function ve NaN gibi verileri kabul eder.
let map = new WeakMap();
const object = {};
map.set('object',{});
gibi bir tanımlama hata ile sonuçlanır.
let map = new WeakMap();
const object = {};
map.set(object,'object');
console.log(map.get(object));
çıktı:
object
Set
Set benzersiz değerlerin bir arada tutulabildiği bir veri yapısıdır.
Set.add ve Set.has
let s = new Set();
s.add(1);
s.add(2);
console.log(s.has(3));
çıktı:
false
.add ile Set e yeni bir veri ekliyoruz .has fonksiyonu ile parametre olarak belirttiğimiz verinin Set içerisinde olup olmadığını kontrol ediyoruz.
Set.delete,Set.size ve Set.clear
let s = new Set();
s.add(1);
s.add(2);
s.delete(2)
console.log(s.size);
çıktı:
1
.delete ile Set içerisindeki bir veriyi silebiliyor ve .size ile Set içerisindeki veri sayısını görebiliyoruz.
let s = new Set();
s.add(1);
s.add(2);
s.clear();
console.log(s.size);
çıktı:
0
.clear fonksiyonu ile Set içerisindeki verileri siliyoruz.
Set içindeki verileri for..of ile listeleyelim.
let s = new Set();
s.add(1);
s.add(2);
s.add(3);
for(let value of s)
console.log(value);
çıktı:
1
2
3
.forEach ilede değerlere erişebiliyoruz.
let s = new Set();
s.add(1);
s.add(2);
s.add(3);
s.forEach(() => console.log(value));
Yukarıda Map veri yapısı için bahsettiğimiz .keys,.values ve .entries fonksiyonları Set içinde kullanılabiliyor.
WeakSet
WeakSet tıpkı WeakMap gibi sadece object,function ve NaN gibi verileri kabul ediyor. Set in .add,.delete ve .has fonksiyonlarını destekliyor.
const func = () => 1;
const object = {};
let s = new WeakSet();
s.add(func);
s.add(object);
console.log(s.has(func));
çıktı:
true
WeakSet veri yapısında WeakSet e aktarılan değişkenler tanımlı oldukları için bir döngü ile çağırılmalarına gerek duyulmaz. .has ile verinin WeakSet içerisinde olup olmadığı kontrol edilir mevcut ise çağırılır.
Bu yazımızda Map,Set,WeakMap ve WeakSet veri yapılarından basit örnekler ile bahsettik. Sonraki yazıda görüşmek üzere.
Hiç yorum yok:
Yorum Gönder