Map和Set

130 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

在日常开发当中,我们可能会采用创建一个变量或数组来存储一些数据,但在需要存储大量复杂数据的情况下,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)