1. map對(duì)象保存的是鍵值對(duì)宇葱,跟object對(duì)象的主要區(qū)別:
1.object的鍵只能是字符串或者symbols
2.map的鍵是有序的, object的鍵是無(wú)序的
3.map的個(gè)數(shù)可以從size屬性獲取, 而object只能手動(dòng)計(jì)算
4.obj原型鏈上的鍵名可能和自己在對(duì)象上設(shè)置的鍵名沖突
// 創(chuàng)建一個(gè)變量
var map0 = new Map();
map0.set('一個(gè)key', '和一個(gè)key關(guān)聯(lián)的value'); //這里的key可以是一個(gè)字符串,一個(gè)對(duì)象,一個(gè)函數(shù)秧耗,甚至是一個(gè)NAN
console.log(map0.get('一個(gè)key')) //和一個(gè)key關(guān)聯(lián)的value 獲取對(duì)應(yīng)Key的value
<!-- 遍歷方法 -->
//1.for..of主要參考解構(gòu)里的demo
//2.forEach()
map0.forEach(function(value, key) {
console.log(key + '=' + value)
}, map0)
<!-- 對(duì)象操作 -->
var map1 = new Map([
["key1", "value1"],
["key2", "value2"]
]); //數(shù)組轉(zhuǎn)map
console.log(map1);
console.log(Array.from(map1)); //map轉(zhuǎn)數(shù)組
var map20 = new Map([
[1, 'one'],
[2, 'two'],
[3, 'three'],
]);
var map21 = new Map([
[1, 'uno'],
[4, 'dos']
]);
var map2 = new Map([...map20, ...map21]);
console.log(map2) //map合并,重復(fù)的鍵值會(huì)被覆蓋
var map3 = new Map([
["key1", "value1"],
["key2", "value2"]
]);
var map4 = new Map(map3);
console.log(map4 === map3);//map克隆 打印false 生成新的對(duì)象
2. set對(duì)象 存儲(chǔ)任何類(lèi)型的唯一值
典型應(yīng)用:數(shù)組去重
注意:
1.+0/-0 恒等不重復(fù)
2.uncefined/undefined 恒等不重復(fù)
3.NAN/NAN不恒等舶治,但是在set中只存一個(gè)不重復(fù)
var set0 = new Set();
set0.add(0);//添加 可以是數(shù)字分井,字符串,對(duì)象
set0.add(0);//{0} 去重
var set1 = new Set(['1','2','3']);
console.log(set1);
console.log([...set1])//set轉(zhuǎn)數(shù)組
console.log(new Set('hello'));//{'h','e','l','l','o'} 字符串轉(zhuǎn)set
var set2 = new Set([1,2,3,4,4,5,5]);
console.log([...set2]); //[1,2,3,4,5]數(shù)組去重
var set3 = new Set([1,4,5,6]);
console.log(new Set([...set2,...set3]));//并集
console.log(set2,set3)
console.log(new Set([...set2].filter(x => set3.has(x))));//交集
console.log(new Set([...set2].filter(x => !set3.has(x))));//差集