Set和Array的区别

  • API不同
  • Set元素不能重复
  • Set是无序结构,操作很快
// const arr = [10, 20, 30, 40, 50]

// Set Api
const s = new Set([10, 20, 30, 40])
s.add(50)
s.delete(10)
s.has(20)
s.size
s.forEach(val => console.log(val)) // value

// Set元素不能重复
// 数组去重
[...new Set(array)]
// 字符串去重
[...new Set('ababbc')].join('')
// 类似于精确相等运算符(===),主要的区别是向 Set 加入值时认为NaN等于自身,而精确相等运算符认为NaN不等于自身

// Set是无序的(快),array是有序的(慢)
const targetArr = []
const targetSet = new Set()
for (let i = 0; i < 10000000; i++) {
  targetArr.push(i)
  targetSet.add(i)
}
console.time('targetArr unshift')
targetArr.unshift('a')
console.timeEnd('targetArr unshift')
console.time('targetArr push')
targetArr.push('b')
console.timeEnd('targetArr push')
console.time('targetArr find')
targetArr.includes(5000000)
console.timeEnd('targetArr find')

console.time('targetSet add')
targetSet.add('a')
console.timeEnd('targetSet add')
console.time('targetSet find')
targetSet.has(5000000)
console.timeEnd('targetSet find')

// targetArr unshift: 9.587158203125 ms
// targetArr push: 0.008056640625 ms
// targetArr find: 4.836181640625 ms
// targetSet add: 0.0029296875 ms
// targetSet find: 0.00390625 ms
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值