Set/Map

set

Set是es6新增的数据结构,类似于数组,但与数组的区别就是它的元素不重复
Set是一个构造函数,用来生成Set数据结构

const set = new Set()  
console.log(set) // Set() {}
set.add(2) // Set(1) {2}
set.add(1) // Set(2) {2,1}
set.add(2) // Set(2) {2, 1}

可以使用add方法来添加成员,Set不会添加相同的元素,这就表明了Set的元素是不能重复的,我们可以利用这一特性来对数组去重
在Set函数中传个数组为作为参数,生成Set数据结构用来初始化

[...new Set([1,2,3,4,5,1,3,4])]  //[1, 2, 3, 4, 5]
/**
    @param Array 传递一个数组,用于生成Set对象实例
*/
const set = new Set(array)  //Set 构造函数, 传数组初始化
set.add(1) //增加set元素 1, 返回新的Set对象
set.size  //元素的长度, 返回
// 可用于数组的去重, 1.Set元素唯一, 转正常数组的方式,数组的解构赋值
set.delete()  //删除元素, 返回。。。
set.has()  // 查, 返回
set.clear() // 清除所有成员, 无返回
Array.from(set) //转换为数组

// 遍历操作
set.keys()  //返回键遍历器
set.values() //返回值遍历器
set.entries() // 返回键值对遍历器
set.forEach() // 使用回调函数遍历每个成员

WeakSet

// 1.WeakSet 是弱引用的,成员随时都有可能被回收,所以不可遍历
// 2. 成员只能是对象,否则会报错
// 3. 与set类似
// 应用:可存放Dom元素,而不用担心造成内存泄漏

Map

// 就是一种对应关系, 作为对象的键只能是他的应用值,相同对象的引用不同,会得到不同的值,也可以设置
var k = {foo: 2}
var m = new Map([[{foo: 2}, 2]])
var m1 =new Map([[k, 2]])
m.get({foo:2}) // undefined
m.get(k)  // 2

new Map([[1,2]])
Map(1) {1 => 2}

// 传统对象的键只能用字符串, 有的时候需要使用变量做为对象的键,有了Map就可以了
var el = document.getElementById("app")
m.set(el, 3) // Map(1) { #app => 3 }

//Map 接收参数的方式就是用数组元素为两个数组的二维数组,作为键和值

const m = new Map([[1,3], [23]])   
// Map 增删改查  set(key, value)  get(key)  has(key) delete(key) clear() 

// Map 遍历  和Set一样  keys()  values() forEach((val) => {})

// Map 与数组、对象、JSON的互相转换

WeakMap

    // 只能接收对象作为键名, 否则会报错
    // 不计入垃圾回收机制和WeakSet类似
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值