ES6 set数据结构

//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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值