set&map简介
    set&map是es6新型出来的引用类型语法,可以简单理解以下,set相当于es5中的Array、map相当于es5中Object。

    set(api)

    • add
    • clear
    • delete
    • has
    • size
    • foreach
    • keys
    • values
    • entries

    map(api)

    • set
    • get
    • has
    • delete
    • clear
    • foreach
    • keys
    • values
    • entries

    set <=> Array

    1. //array=>set
    2. 1. var s1 = new Set(['hello'])
    3. //set => array
    4. 1. Array.from(s1)
    5. 2. [...s1]

    map <=> object
    new Map(Object.entries(obj))使用这个方法将object转为map

    1. //object => map
    2. var obj = {name:'rise',age:100}
    3. new Map(Object.entries(obj))
    4. //map=> object
    5. [...m1].reduce((curr,it,arr) => {
    6. curr[it[0]] = it[1]
    7. return curr;
    8. },{})
    9. //{name: "rise", age: 100}

    直接使用Object.fromEntries(mp) map=> object

    1. var obj = {name:'rise',age:100}
    2. var mp = new Map(Object.entries(obj))
    3. mp
    4. Map(2) {"name" => "rise", "age" => 100}
    5. Object.fromEntries(mp)
    6. {name: "rise", age: 100}

    map <=> array

    1. //array => map
    2. var arr = [["name","rise"],["age",100]]
    3. var m1 = new Map(arr)
    4. //Map(2) {"name" => "rise", "age" => 100}
    5. //map => arr
    6. [...m1]
    7. //[["name","rise"],["age",100]]

    set 、 map 、 array 、 object 遍历方法

    遍历map

    1. m1 {"name" => "rise", "age" => 100}
    2. for(let [key,value] of m1){
    3. console.log(key,value)
    4. }
    5. //name rise
    6. //age 100


    遍历set

    1. s1 => Set(2) {"hello", "word"}
    2. for(let item of s1){
    3. console.log(item)
    4. }
    5. //hello
    6. //word

    遍历数组

    1. var arr = ["tom","tom"]
    2. for(let item of arr){
    3. console.log(item)
    4. }
    5. //tom
    6. //tom

    遍历对象

    1. var obj = {
    2. name:"rise",
    3. age:100
    4. }
    5. for(let [key,value] of new Map(Object.entries(obj))){
    6. console.log(key,value)
    7. }
    8. //name rise
    9. // age 100

    注:
    forEach方法在set 、map、array都支持 如果对象要使用forEach方法 可以转为map就可以使用了。
    下面举个案例:

    1. //定义一个map 这里使用了forEach方法
    2. var m1 = new Map()
    3. m1.set("name","rise")
    4. Map(1) {"name" => "rise"}
    5. m1.forEach((it,val) => {
    6. console.log(it,val)
    7. })
    8. //这里借助了new Map(Object.entries(obj))将对象转为
    9. var obj = {name:1,age:2,sex:3,love:4,time:5}
    10. new Map(Object.entries(obj)).forEach((key,val,ob) => {
    11. console.log(val,key,ob)
    12. })
    13. 1 "name"
    14. 2 "age"
    15. 3 "sex"
    16. 4 "love"
    17. 5 "time"

    总结:
    map 转为 object 可以使用reduce方法
    […m1].reduce((curr,it,arr) => {
    curr[it[0]] = it[1]
    return curr;
    },{})
    使用es6提供的方法Object.fromEntries(mp)

    object转为map可以使用
    new Map(Object.entries(obj))

    array转为set
    var s1 = new Set([1,2,3])

    set转为array
    1.[…s1]
    2.Array.from(s1)