es6 的Set和Map

//Set 和Map
类似数组 成员唯一(无重复值)

set 构造函数
var arr3=[1,2,3,3,4,5,3,5]
a,三种添加方式
const arr4=new Set();
// 1.
const arr4=new Set().add(1).add(2).add(3);
// 2. add()
arr4.add(1)
arr4.add(2)
arr4.add(3)
arr4.add(4)
//3.
const arr5=new Set([1,2,3,4])

//成员的总数size 属性
arr5.size
const arr4=new Set([1,2,3,4]); arr4.size < 4
const arr5=new Set([1,2,3,4,5,1,2,1,3,4]);
arr5.size 结果< 5 // 去重操作  arr5 {1, 2, 3, 4, 5}
size 可以去重
b,删除
delete(n) //布尔值 n不是索引 是成员
arr5.delete(2)
true
arr5
Set(4) {1, 3, 4, 5}
c, has() //布尔值 判断值是否为set成员
clear() 删除所有的成员 没有返回值

Array.from() 将Set结构转成数组
const arr7=new Set(['a','b','c','d','e','f'])
let arr2=Array.from(arr7) //将set结构转成数组
console.log(arr7) < Set(6) {"a", "b", "c", "d", "e", …}
console.log(arr2) < (6) ["a", "b", "c", "d", "e", "f"]

遍历
for...of
for...in
const arr8=new Set(['a','b','c','d','e','f'])
for(let list of arr8.entries()){ //keys()键 values()值
console.log(list)
}
< ["a", "a"] ["b", "b"] ["c", "c"] ["d", "d"] ["e", "e"] ["f", "f"]
keys() 遍历键
values() 遍历值
entries() 遍历键值对

合并
let a=new Set(['a','b','c','d','e','f','a','f','b']);
let b=new Set(['w','r','e','d','e']);
let c=new Set([...a,...b]) // 两个数组的并集 并去重

交集
let d=new Set([...a].filter(x=>b.has(x)));
filter的callback函数需要返回布尔值true或false. 如果为true则表示通过,为false 过滤掉
< Set(2) {"d", "e"}

***********************************

Map (对象) 键值对的集合
var obj={
name:"111",
age:32
}
const m=new Map();
let str ={x:111}
set() 添加成员
m.set('str','111') 对比 m.set(str,'111') ‘str ’是字符串 str是{x:111}
m.get('str')
m.keys() m.values()
[[Entries]]//键值对的遍历
:
Array(2)
0:{"str" => "222"}
1:{Object => "sss"}

 

1. map对象 const m=new Map([['x',1],['y',2],['z',3]])
可以转换成数组:
[...m]
0:(2) ["x", 1]
1:(2) ["y", 2]
2:(2) ["z", 3]
数组转Map:let m1=new Map([...m])
2.Map也可以转换成对象
let obj={};
for(let[k,v] of m){
obj[k]=v
}
console.log(obj)

***************************
for...of 遍历所有的数据结构
for...in 主要用来遍历对象
**
let arr=["a","c","b"]
for(let v of arr){
console.log(v)
}
=> a b c 打印出数组的value
**
let arr1=["a","c","b"]
for(let v in arr1){
console.log(v)
}
=> 0 1 2 打印出数组的索引

let obj={"x":1,"y":2}
for(let v in obj){
console.log(obj[v]); // =>打印出 1,2
console.log(v) // =>打印出 x,y
}

posted @ 2018-03-28 12:16  crystal2018  阅读(145)  评论(0编辑  收藏  举报