一、Set和Map數據結構定義區別
Set數據結構 | Map數據結構 | |
定義 | Set類似於數組,但是成員的值都是唯一的,沒有重複。使用new Set()創建Set實例 | Map類似於對象,但是鍵的範圍不限於字符串,各種類型的值都可以作爲鍵值。使用new Map()創建Map實例 |
二、Set和Map操作方法的區別
Set數據結構 | Map數據結構 | |
size屬性 | set.size | map.size |
新增 | set.add(val); 返回Set結構本身 | map.set(key, val); 返回Map結構本身 |
刪除 | set.delete(val); 返回布爾值,表示是否刪除成功 | map.delete(key); 返回布爾值,表示是否刪除成功 |
是否包含某個值 | set.has(val); 返回布爾值,表示是否包含這個值 | map.has(val); 返回布爾值,表示是否包含這個鍵 |
獲取值 | - | map.get(key); 返回對應鍵值的值,沒有則返回undefined |
清除所有成員 | set.clear(); 沒有返回值 | map.clear(); 沒有返回值 |
//Set數據結構
let set = new Set();
set.add(1)
.add(2)
.add(2);
set.size; //2
set.has(3); //false
set.delete(2);
set.has(2); //false
//Map數據結構
const map = new Map();
map.set('aaa', true)
.set(2, 2)
.set(undefined, 'this is undefined');
map.size; //3
map.get(undefined); //'this is undefined'
map.has(2); //true
map.delete(2); //true
map.has(2); //false
三、Set和Map的遍歷方法
1. 遍歷鍵名:for(let item of set.keys()){ }; for(let item of map.keys()){ };
2. 遍歷鍵值:for(let item of set.values()){ }; for(let item of map.values()){ };
3. 遍歷鍵值對:for(let item of set.entries()){ }; for(let item of map.entries()){ };
4. 使用回調遍歷每個成員:set.forEach(); map.forEach()
四、Set和Map的應用
1. 數組去重:[... new Set(Array)] ;
參考文章:http://es6.ruanyifeng.com/