本文已参与「新人创作礼」活动,一起开启掘金创作之路。
在日常开发当中,我们可能会采用创建一个变量或数组来存储一些数据,但在需要存储大量复杂数据的情况下,mp和set类型的结构会更为简单,接下来为大家介绍一下map和set的相关知识。
map
概念
Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值) 都可以作为一个键或一个值,可以快速查找和删除数据。
特点
- 数据以键值对形式储存
- 键名不可以重复,键值可以
- 键名不可以修改,键值可以
- 数据根据键名自动排序
使用
创建map对象
let map = new Map()
添加键
map.set('键名','键值')
读取值
map.get('键名')
删除键
map.delete('键名')
Foreach()对map进行迭代
let map = new Map();
map.set('name1','1');
map.set('name2','2');
map.set('name3','3');
map.foreach(function (value, key) {
console.log(value) //name1 name2 name3
console.log(key) //1 2 3
})
注意:一个键名只能对应一个键值,键名重复的情况下后设置的值会覆盖先前设置的值。
let map = new Map()
map.set('name',0)
map.set('name',1)
map.get('name') //1
set
概念
Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。set类似于只有键值没有键名,形式很像数组,同样支持快速查找和删除数据。
特点
- 不可以被改变
- 不能出现重复键
- 数据会自动排序
使用
创建set对象
let set = new Set()
添加值
let set = new Set(1,'abc',{'name':'zhangsan',age:100})
set.add(4) //1,'abc',{'name':'zhangsan',age:100},4
删除值
let set = new Set(1,'abc',{'name':'zhangsan',age:100})
set.delete(4) //1,'abc',{'name':'zhangsan',age:100}
Foreach()对set进行迭代
let set = new Set('name1','name2','name3');
set.foreach(function (value) {
console.log(value) //name1 name2 name3
})
数组去重
let arr = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
let set = new Set(arr)
console.log(...set)