Map集合
Map是一種鍵值對的數(shù)據(jù)存儲結(jié)構(gòu)祠挫,比傳統(tǒng)的數(shù)組更具優(yōu)秀的查詢結(jié)構(gòu)與速度
Map聲明方式
let myMap = new Map(); //我們可以聲明一個空的Map集合认轨,然后之后在向里面填充數(shù)據(jù)
//我們也可以在初始化數(shù)據(jù)的時候就讓這個Map()集合自帶數(shù)據(jù)仑乌,就是在里面寫個二維數(shù)組
let myMap = new Map([['tim',12],['mikasa',21],['alice',40]]);
向Map集合中添加數(shù)據(jù)
myMap.set('tom',45);
獲取Map集合中的數(shù)據(jù)
myMap.get('tom');
判斷Map集合中是否有所指定的鍵(key)
myMap.has('tom'); //true
刪除Map集合中的指定的鍵
myMap.delete('tom'); //true
Set集合
Set集合中的值不重復(fù)
Set集合聲明
let s1 = new Set(); // 空Set
let s2 = new Set([1, 2, 3]); // 含1, 2, 3
通過add()向Set集合中添加數(shù)據(jù)
s2.add(4)
other i want to write
集合的遍歷
我們可以利用for....of....直接遍歷Map集合和Set集合衣吠,如
for(let x of mySet){console.log(x)}
for(let x of myMap){console.log(x)}
或者贸弥,Map和Set集合都有keys()
,values()
,entries()
方法迈螟,我們可以遍歷這些數(shù)據(jù)
我們還可以利用forEach()方法進行遍歷禁荒,如下
Set與Array類似猬膨,但Set沒有索引,因此回調(diào)函數(shù)的前兩個參數(shù)都是元素本身:
let s = new Set(['A', 'B', 'C']);
s.forEach(function (element, sameElement, set) {
console.log(element);
});
Map的回調(diào)函數(shù)參數(shù)依次為value呛伴、key和map本身:
let m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
m.forEach(function (value, key, map) {
console.log(value);
});
如果對某些參數(shù)不感興趣勃痴,由于JavaScript的函數(shù)調(diào)用不要求參數(shù)必須一致,因此可以忽略它們热康。例如沛申,只需要獲得Array的element:
var a = ['A', 'B', 'C'];
a.forEach(function (element) {
console.log(element);
});
。姐军。铁材。。etc