//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"}
map可以转换成数组,也可以转换成对象
原文地址:https://www.cnblogs.com/crystal2018/p/8663161.html