Map/Set與數組和對象的比較

實現增、查、改、刪功能

(1)MapArray的對比

//數據結構的橫向對比----增、查、改、刪

letmap=newMap();

letarray=[];

//增

map.set('t',1);

array.push({t:1});

console.info('map-array',map,array);

//查

letmap_exist=map.has('t');

letarray_exist=array.find(item=>item.t);

console.info('map_exist-array_exist',map_exist,array_exist);

//改

map.set('t',2);

array.forEach(item=>item.t?item.t=2:'');

console.info('map_set-array_forEach',map,array);

//刪

map.delete('t');

letindex=array.findIndex(item=>item.t);//先找到要刪除元素的索引值

array.splice(index,1);//利用splice()進行對元素的刪除

console.info('map_delete-array_splice',map,array);

 

(2)SetArray的對比

letset=newSet();

letarray=[];

//增

set.add({t:1});

array.push({t:1});

console.log(set,array);

//查

letset_exist=set.has({t:1});//返回false,如果想返回true,則裏面的元素必須是要被保存過,通過地址就可以查詢到

letarray_exist=array.find(item=>item.t);

console.info('set_exist-array_exist',set_exist,array_exist);

//改

set.forEach(item=>item.t?item.t=2:'');

array.forEach(item=>item.t?item.t=2:'');

console.info('set_forEach-array_forEach',set,array);

//刪

set.forEach(item=>item.t?set.delete(item):'');

letindex=array.findIndex(item=>item.t);//先找到要刪除元素的索引值

array.splice(index,1);//利用splice()進行對元素的刪除

console.info('map_forEach-array_splice',set,array);

 

(3)MapSetObject的對比

//Map,Set,Object對比

letitem={t:1};//提前爲set的元素進行了存儲

letmap=newMap();

letset=newSet();

letobj={};

//增

map.set('t',1);

set.add(item);

obj['t']=1;

console.info(map,set,obj);

//查

letmap_exist=map.has('t');

letset_exist=set.has(item);

letobj_exist='t'inobj;

console.info(map_exist,set_exist,obj_exist);

//改

map.set('t',2);

item.t=2;//提前

//set.forEach(item=>item.t?item.t=2:'');//未提前

obj['t']=2;

console.info(map,set,obj);

//刪

map.delete('t');

set.delete(item);//提前

//set.forEach(item=>item.t?set.delete(item):'');//未提前

deleteobj['t'];

console.info(map,set,obj);

 (4)使用優先級

優先使用Map和Set

能使用Map就不使用數組

要求數據唯一性,考慮使用Set,放棄使用Object,數組

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章