Es6 set和map使用

概要

set的使用(应用:数据去重)

一、Set的方法

  • add() 添加元素
  • 使用add添加基本数据类型成员,会直接去重
  • 添加应用数据类型会全部添加,因为引用地址不相同,不算重复值
第一种:基本数据
let s1 = new Set([1, 2, 3, 4, 4, 5, ["aa", "bb"]]); 
s1 .add(9)
console.log(s1 )    //[1, 2, 3, 4, 5, ["aa", "bb"],9]
第一种:应用数据类型
let s2 = new Set([1, 2, 3, 4, 4, 5, ["aa", "bb"]]); 
s2.add(["aa","bb"])
console.log(s2)  //[1, 2, 3, 4, 4, 5, ["aa", "bb"],["aa", "bb"]]
  • delete() 删除元素
  • `可以直接删除数组中的值,删除应用数据类型时需要传入它的地址
第一种:删除普通值
let set = new Set([1,2,3,[4,5,6]]);
set.delete(3)
console.log(set)  // [1,2,[4,5,6]]
第二种:删除应用数据类型 `当我们要删除引用数据类型的成员时,需要传入引用地址,而不能传值`
let set2 = new Set([1,2,3]);
let arr = [4,5,6]
set2.add(arr)
console.log(set2 )   //[1,2,3,[4,5,6]]

set2.delete(arr)
console.log(set2) // [1,2,3]
  • has() 判断是否存在某个值,返回结果为true或false
  • 注意:判断引用值时,也需要传入引用地址,而不能传值,否则会返回false
let set = new Set(['zhangsan', [1, 2, 3]])
let arr = [7,8,9]
set.add(arr)
console.log(set.has('zhangsan'));//true
console.log(set.has([1,2,3]));//false
console.log(set.has(arr));//true
console.log(set.has('hello'));//false
  • size 获取长度
let set3 =new Set([1,2,3]);
console.log(set3.size)    // 3
  • clear() 清空set集合

Set遍历成员 keys()、values()、entries()

  • Set有keys()、values()、entries()方法,这三个方法都返回一个迭代器对象,可以使用for-of来遍历它们的返回值:
    *Set集合的key值和value值是一样的
let set2 = new Set([{name:'kjp',age:18},{name:'haha',age:90}]);
for (let item of set2.keys()) {
   console.log('姓名为:'+item.name,'年龄为:'+item.age);   
   //姓名为:kjp 年龄为:18
   //姓名为:haha 年龄为:90
}
for (let item of set2.values()) {
  console.log('姓名为:'+item.name,'年龄为:'+item.age);
   //姓名为:kjp 年龄为:18
   //姓名为:haha 年龄为:90
}

二、Map集合

  • Map类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。Map 可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。
let map = new Map()
// 添加map成员
map.set('name','dog')
// 获取map成员
map.get("name")
// 删除map成员
map.delete('name')

三、Map和Object的区别

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

herry-弟弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值