set相似於數組,但成員惟一,沒有重複值。javascript
const s = new Set();
[ 1, 3, 2, 4, 5, 3, 2, 1, 10, 7].forEach(a => s.add(a));
console.log(s);複製代碼
set 遍歷出來是以key value的形式存儲java
當Set加入值的時候,不會發生類型轉換,set判斷值相似於(===)精確相等運算符,但有區別,在於NaN等於自身,但精確相等運算符認爲nan不等於自身。數組
const set = new Set();
const a = NaN;
const b = NaN;
set.add(a);
set.add(b);
console.log(set);
// Set(1) {NaN}複製代碼
set的兩個對象老是不相等的bash
let set = new Set();
set.add({});
set.size // 1
set.add({});
set.size // 2複製代碼
Set 實例的方法分爲兩大類:操做方法(用於操做數據)和遍歷方法(用於遍歷成員)。下面先介紹四個操做方法。數據結構
add(value)
:添加某個值,返回 Set 結構自己。delete(value)
:刪除某個值,返回一個布爾值,表示刪除是否成功。has(value)
:返回一個布爾值,表示該值是否爲Set
的成員。clear()
:清除全部成員,沒有返回值。const item = new Set([ 9, 2, 3, 4, 2, 1, 3, 8, 1, 9 ]);
console.log(item);
const array = Array.from(item);
console.log(array);
for (let a of array) {
console.log(a);
}複製代碼
Set結構有4種遍歷方法,能夠便利成員函數
keys()
:返回鍵名的遍歷器values()
:返回鍵值的遍歷器entries()
:返回鍵值對的遍歷器forEach()
:使用回調函數遍歷每一個成員Set的遍歷順序就是插入順序,(Set保存一個回調函數,調用時就能保證按照添加順序調用)
Set的forEach方法:ui
const set2 = new Set([ 1, 5, 4, 5 ]);
set2.forEach((value, key) => {
console.log(key + ':' + value);
});複製代碼
set可用擴展運算符將Set對象轉爲數組;spa
const set = new Set([ 1, 2, 3, 4, 5 ]);
console.log('set', set);
console.log('...set', [...set]);
console.log('Array.from', Array.from(set));複製代碼
「鍵值對」數據結構,3d
const map = new Map([ ['name', '張三'], ['title', 'author'] ]); console.log(map); console.log(map.has('name')); console.log(map.get('title'));
複製代碼
1. size屬性code
const map = new Map(); map.set('a', '111'); map.set('b', '222'); console.log(map.size); // 2複製代碼
2. set(key, value)
const map = new Map() .set(1, 'a') .set(2, 'b') .set(3, 'c'); map.set(2, 'h'); console.log(map);複製代碼
set() 方法能夠採用鏈式賦值,若第二次給同名鍵賦值,則覆蓋第一次的值。
3. get(key)
4. delete(key)
5. has(key)
6. clear() 清除全部成員
keys()
:返回鍵名的遍歷器。values()
:返回鍵值的遍歷器。entries()
:返回全部成員的遍歷器。forEach()
:遍歷 Map 的全部成員。map的便利順序就是插入順序
map 轉化爲數組的方法:擴展運算符
const map = new Map([ [ 'f', 'no' ], [ 't', 'yes' ] ]);
console.log([...map]);複製代碼
const map = new Map([ [ '111', 'su' ], [ '333', 'zhou' ] ]); console.log(map);複製代碼
{"111" => "su", "333" => "zhou"}複製代碼