es6 set和map

set和map区别与应用
  • Set和Map主要的应用场景在于数组去重和数据存储
  • Set是一种叫做集合的数据结构,Map是一种叫做字典的数据结构
扩展:集合
  • 集合的特点是无序且唯一,可看成既没有重复元素也没有顺序概念的数组。
  • set类似于数组,但没有重复值。
扩展:字典
  • 集合和字典都可以存储不重复的值。
  • 集合是以[值,值]的形式存储元素,字段以键-值形式存储。
  • JavaScript的对象本质上是键值对的集合(Hash结构),但是只能用字符串作为键;
    Map类似于对象,也是键值对集合,各种类型的值(包括对象)都能当做键;
set
增删改查
  • 增加:add或直接set([])
add:
let set1 = new Set()
set1.add(1)
set1.add(2)
console.log(set1) //set1{1,2}

<!--注意:不能同时添加多个值,只会取第一个值-->
set1.add(3,4)
console.log(set1) //set1{3}

更快速的方法
let set2 = new Set([1,2,3,4,5,6])
  • 删除:delete、clear
let set1 = new Set([1,2,3])
console.log(set1) //set1{2}

清除所有项
set1.clear()
  • 查看是否存在某个值:has(返回布尔值)
let set1 = new Set([1,2,3,6])
let isHas1 = set1.has(1) //true
let isHas4 = set1.has(4) //false
console.log(isHas1)
console.log(isHas4)
set和数组的相互转换
  • 数组转set:new Set(arr)
let arr = [1,2,3,4,5,6]
let set1 = new Set(arr)
  • set转数组:Array.from(set)
let set1 = new Set([1,2,3,4,5])
let arr = Array.from(set1)
set的遍历
  • for of遍历
扩展:for of循环
keys() :遍历key值
values() :遍历value值
entries() :遍历key和value

注意;set键和值是一样的,故使用for of时,有以下:
let set1 = new Set([1,2,3])
for(let item of set1.keys()) {
    console.log(item)  ----1,2,3
}
for(let item of set1.values()) {
    console.log(item) ----1,2,3
}
for(let item of set1.entries()) {
    console.log(item) ----[1,1] [2,2] [3,3]
}

故,用以下遍历即可
for(let item of set1) {
    console.log(item) ----1,2,3
}
  • forEach遍历
<!--set的key和value是相同-->
let set1 = new Set(['a','b','c'])
set1.forEach((key,value) => {
   console.log(key + ':' + value) ---a:a b:b c:c
})

扩展:注意区分数组的forEach,第一个值是value,第二个是index
let arr = ['a','b','c']
arr.forEach((v,i) => {
   console.log(i + ':' + v)
})
特性:类似于数组,但是所有元素都是唯一的,没有重复
  • 利用set进行数组去重
let arr = [1,2,3,6,6,2,1,3]
let set1 = new Set(arr)

多数组去重时:
let arr1 = [1,2,3,6,6,2,1,3]
let arr2 = [2,2,2,3,4,5,5,4,3]
let set1 = new Set([...arr1,...arr2])
set和array区别
  • 增删改查
增:
let arr = []
arr.push(1)

let set = new Set()
set.add(2)

删:
let arr = [1,2]
arr.shift(1) //pop、splice

let set = new Set([1,2])
set.delete(2)

查(查找是否含有某一项):
find返回的是满足条件的第一项
let arr = [1,2]
let hasArr = arr.find((v,i)=> {
    return v === 1
})

has返回的是布尔值
let set = new Set([1,2])
let hasSet = set.has(3)
set转数组
var set = new Set([1, 2, 3, 3, 4]);
Array.from(set)  //输出[1,2,3]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值