es6 的學習之 set 和 map

set

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():清除全部成員,沒有返回值。
  • Array.from()方法能夠將set結構改成數組。

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));複製代碼


map

「鍵值對」數據結構,3d

const map = new Map([      ['name', '張三'],      ['title', 'author']    ]);    console.log(map);    console.log(map.has('name'));    console.log(map.get('title'));
複製代碼

map實例的屬性和操做方法

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()      清除全部成員

map 的遍歷方法

  • keys():返回鍵名的遍歷器。
  • values():返回鍵值的遍歷器。
  • entries():返回全部成員的遍歷器。
  • forEach():遍歷 Map 的全部成員。

map的便利順序就是插入順序

map 轉化爲數組的方法:擴展運算符

  1. const map = new Map([      [ 'f', 'no' ],      [ 't', 'yes' ]    ]);
        console.log([...map]);複製代碼

數組轉爲map的方法:將數組傳入Map構造函數,就能夠轉爲Map

const map = new Map([      [ '111', 'su' ],      [ '333', 'zhou' ]    ]);    console.log(map);複製代碼

{"111" => "su", "333" => "zhou"}複製代碼
相關文章
相關標籤/搜索