es6语法总结

478 阅读2分钟

1. new Set()的基础用法(ES6)

1. 什么是Set()

Set是es6新增的数据结构。 它的一大特性是所有元素都是唯一的,没有重复的值, 一般称之为集合。 Set本身是一个构造函数, 用来生成Set数据结构。 Set对象允许你存储任何类型的唯一值, 无论是原始值或是对象引用。

2. 方法

添加(add)
删除(delete)
判断某个元素是否存在(has)
清除所有元素(clear)
获取Set元素个数(size)
遍历元素(for of 方法 和 forEach方法)

3. 使用场景

// 1. 基础语法
let list = new Set();
list.add(111);
list.add(222).add(333).add(444);
list.has(222) // 返回布尔值 
list.delete(333) // 如果删除成功返回true, 否则返回false
list.size // 当前 Set 元素总数
list.clear() // 清空Set中的所有成员

// 2. set遍历取值。 方式1, forEach。 方式2, for循环
// 注意: Set 结构的键名就是键值因此第一个参数与第二个参数的值永远都是一样的
let list2=new Set(['a','b','c'])
for(let key of list2){
   console.log(key)//a,b,c
}

list2.forEach(v=>{
    console.log(`%c v` + '', 'background:#000;color:#bada55', v);
})

// 3. 数组去重
let arr = [1,2,3,4,5,4,3,2]
let list = new Set(arr)
let res = [...list]
let res2 = Array.from(new Set(list))

// 4. 字符串去重
let str = '22334452'
let newStr = [...new Set(str)].join('')
console.log(`%c newStr` + '', 'background:#000;color:#bada55', newStr);

// 5. 实现并集, 交集和差集
const arr1 = new Set([1, 3, 5, 7])
const arr2 = new Set([1, 2, 3, 4, 5])
// 并集
let together = new Set([...arr1, ...arr2])
console.log(`%c together` + '', 'background:#000;color:#bada55', together);
// 交集
let intersect = new Set([...arr1].filter(v=> arr2.has(v)))
console.log("intersect", intersect);
// 差集
let difference = new Set([...arr1].filter(x => !arr2.has(x)));
// 这是 arr1 相对于 arr2的差集
let difference2 = new Set([...arr2].filter(x => !arr1.has(x)));
// 这是 arr2 相对于 arr1的差集
console.log("difference2", difference2);