学习 js Set与map 慢才后生 2022-11-03 2022-11-03 Map的数据结构: 一组具有键值对的结构,注意参数顺序(key:value),key具有 唯一性 value可有可无,可重复
1 2 3 4 5 6 var m=new Map ([['Michael' ,95 ],['Bob' ,75 ],['Tracy' ,85 ]]);var scoreList =[{name :'Tim' ,age :18 ,score :90 }, {name :'Tony' ,age :17 ,score :95 }, {name :'Kevin' ,age :18 ,score :91 }];
如上为map的数据结构用 二维数组 表示的键值对
map结构常用方法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 map.set (key,value)---->给map添加键值对元素,返回值类型为空类型 var m=new Map ();m.set ('Adam' ,67 ); m.set ("Bob" ,59 ); console .log (m)map.has (key)--->检查map是否含有key,返回值类型为boolean类型 var m=new Map ();m.set ('Adam' ,67 ); m.set ("Bob" ,59 ); console .log (m.has ("Adam" ))map.delete (key)---->通过key删除元素 map.set (key,value)---->给map添加键值对元素,返回值类型为空类型 var m=new Map ();m.set ('Adam' ,67 ); m.set ("Bob" ,59 ); m.delete ("Bob" ) console .log (m.has ("Bob" ));
需要注意的: 由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值覆盖:
1 2 3 4 var m =new Map ();m.set ('Adam' ,67 ); m.set ('Adam' ,88 ); console .log (m.get ('Adam' ));
map拓展: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <script> let map = new Map (); map.set ('路飞' , 20 ); map.set ('索隆' , 21 ); map.set ('山治' , 22 ); map.set ('娜美' , 23 ); console .log (map); console .log (map.get ('山治' )); map.set ('山治' , 18 ); console .log (map.get ('山治' )); console .log ('+++++++++++++++++++++++++' ); map.forEach (element => { console .log (element); }); console .log ('+++++++++++++++++++++++++' ); map.forEach ((v, k ) => { console .log (k + '==>' + v); }); console .log ('+++++++++++++++++++++++++' ); for (const array of map) { console .log (array[0 ], '==>' , array[1 ]); } </script>
Set的数据结构: Set和Map类似,也是一组key(唯一性)的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。
用代码表示Set的数据结构:
1 2 3 4 5 6 7 8 9 var set={1 ,2 ,3 ,4 }要创建一个Set ,需要提供一个Array 作为输入,或者直接创建一个空Set : var s1 =new Set ();var s2 =new Set ([1 ,2 ,3 ]);用于 数组去重: var s = new Set ([1 ,2 ,3 ,3 ,'3' ]);console .log (s);
Set的常用方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Set .add (key);---->添加元素,参数为key,可以重复添加,但不会有效果:var set = new Set ([1 ,2 ,3 ]); s.add (4 ); s.add (4 ); console .log (s);Set .has (key)—>判断Set 中是否有key (元素)var s = new Set ([1 ,2 ,3 ]);console .log (s.has (4 ));Set .delete (key)—>删除对应的keyvar s = new Set ([1 ,2 ,3 ]);s.delete (3 ); console .log (s);
set拓展: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 <script> let list = ['路飞' , '索隆' , '路飞' ]; console .log (list); console .log (list.length ); let array = new Array (list); console .log (array); console .log (array.length ); let set = new Set (list); console .log (set); console .log (set.size ); console .log (set.has ('索隆' )); console .log (set.has ('娜美' )); set.add ('山治' ); console .log (set); set.add ('路飞' ); set.add ('索隆' ); console .log (set); set.forEach (element => { console .log (element); }); for (const it of set) { console .log (it); } </script>