//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 过滤掉
***********************************
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"}
map 可以转换成数组, 也可以转换成对象
来源: http://www.bubuko.com/infodetail-2541435.html