//set 数据结构
//ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值
//Set 本身是一个构造函数,用来生成 Set 数据结构。
const s = new Set()
let arr = [2, 3, 5, 4, 5, 2, 2]
arr.forEach(ele => {
s.add(ele)
})
for(let i of s){
console.log(i)
}
//结果:2,3,5,4
const set = new Set([1,2,3,4,4])
let arr2 = [...set]
console.log(arr2) // [1,2,3,4]
console.log(set.size) //4
// 去除数组的重复成员
//[...new Set(array)]
//函数去重
function dedupe(array) {
return Array.from(new Set(array));
}
dedupe([1, 1, 2, 3]) // [1, 2, 3]
//Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)
// add(value):添加某个值,返回Set结构本身。
// delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
// has(value):返回一个布尔值,表示该值是否为Set的成员。
// clear():清除所有成员,没有返回值
console.log(set.has(2))
// Set 结构的实例有四个遍历方法,可以用于遍历成员。
// keys():返回键名的遍历器
// values():返回键值的遍历器
// entries():返回键值对的遍历器
// forEach():使用回调函数遍历每个成员
//由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys方法和values方法的行为完全一致。
let set2 = new Set(['red', 'green', 'blue'])
for(let item of set2.keys()){
console.log(item) //red green blue
}
for(let item of set2.values()){
console.log(item) //red green blue
}
for (let item of set2.entries()){
console.log(item)
}
// ["red", "red"]
// ["green", "green"]
// ["blue", "blue"]
//Set遍历
//Set 结构的实例默认可遍历,它的默认遍历器生成函数就是它的values方法。这意味着,可以省略values方法,直接用for...of循环遍历 Set
//Set结构的实例的forEach方法,用于对每个成员执行某种操作,没有返回值。
let set3 = new Set([1, 2, 3]);
set3.forEach((value, key) => console.log(value * 2) )
// 2
// 4
// 6
//扩展运算符(...)内部使用for...of循环,所以也可以用于 Set 结构
let set4 = new Set(['red', 'green', 'blue']);
console.log("set4="+set4)
let arr4 = [...set];
console.log("arr4="+arr4)
// ['red', 'green', 'blue']
//数组去重
let array = [3, 5, 2, 2, 5, 5]
let unique = [...new Set(array)]
console.log(unique instanceof Array) //true
console.log("unique="+unique) //3,5,2
ES6 set数据结构
最新推荐文章于 2024-05-21 00:00:00 发布