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
//array=>set1. var s1 = new Set(['hello'])//set => array1. Array.from(s1)2. [...s1]
map <=> object
new Map(Object.entries(obj))使用这个方法将object转为map
//object => mapvar obj = {name:'rise',age:100}new Map(Object.entries(obj))//map=> object[...m1].reduce((curr,it,arr) => {curr[it[0]] = it[1]return curr;},{})//{name: "rise", age: 100}
直接使用Object.fromEntries(mp) map=> object
var obj = {name:'rise',age:100}var mp = new Map(Object.entries(obj))mpMap(2) {"name" => "rise", "age" => 100}Object.fromEntries(mp){name: "rise", age: 100}
map <=> array
//array => mapvar arr = [["name","rise"],["age",100]]var m1 = new Map(arr)//Map(2) {"name" => "rise", "age" => 100}//map => arr[...m1]//[["name","rise"],["age",100]]
set 、 map 、 array 、 object 遍历方法
遍历map
m1 {"name" => "rise", "age" => 100}for(let [key,value] of m1){console.log(key,value)}//name rise//age 100
遍历set
s1 => Set(2) {"hello", "word"}for(let item of s1){console.log(item)}//hello//word
遍历数组
var arr = ["tom","tom"]for(let item of arr){console.log(item)}//tom//tom
遍历对象
var obj = {name:"rise",age:100}for(let [key,value] of new Map(Object.entries(obj))){console.log(key,value)}//name rise// age 100
注:
forEach方法在set 、map、array都支持 如果对象要使用forEach方法 可以转为map就可以使用了。
下面举个案例:
//定义一个map 这里使用了forEach方法var m1 = new Map()m1.set("name","rise")Map(1) {"name" => "rise"}m1.forEach((it,val) => {console.log(it,val)})//这里借助了new Map(Object.entries(obj))将对象转为var obj = {name:1,age:2,sex:3,love:4,time:5}new Map(Object.entries(obj)).forEach((key,val,ob) => {console.log(val,key,ob)})1 "name"2 "age"3 "sex"4 "love"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)
