跳至主要內容

Set和Map

zfh大约 3 分钟约 835 字...

Set

Set 是一种无序且唯一的数据结构

Set本身是一个构造函数,用来生成 Set 数据结构

const s = new Set()

实例方法和属性

add

添加某个值,返回 Set 结构本身

const s = new Set()
s.add(1).add(2)

has

返回一个布尔值,表示该值是否为Set的成员

const s = new Set()
s.add(1).add(2)
console.log(s.has(1)) // true

delete

删除某个值,返回一个布尔值,表示删除是否成功

const s = new Set()
s.add(1).add(2)
s.delete(1) // true

clear

清空 Set,没有返回值

const s = new Set()
s.add(1)
s.add(2)
s.clear()
console.log(s) // Set {}

forEach 数组,set,map都有这个方法

const s = new Set()
s.add(1).add(2).add(3)
s.forEach(function (v, k, set) {
  // set中v=k
  console.log(v, k, set)
  console.log(this) // window
}, 这里修改this执向)

size

返回成员个数

Set 构造函数的参数

数组

const s = new Set([1, 2, 1])
console.log(s) // Set(2) { 1, 2 }
字符串、arguments、Nodelist、Set 等类数组对象
// 字符串组作为Set构造函数的参数
const s = new Set('hello')
console.log(s) // Set(4) { 'h', 'e', 'l', 'o' }
// Set作为Set构造函数的参数
const s = new Set()
s.add(1).add(2)
// 相当于复制了了一个全新的Set
const b = new Set(s)
console.log(b) //Set { 1, 2 }
console.log(b === s) // false

Set 判断重复的方式

set 对重复值的判断基本遵循严格相等,但是对于 NaN 的判断与===不同,Set NaN 等于 NaN

Set 的应用

数组去重

// Set也可以使用`展开运算符`展开
console.log([...new Set([1, 2, 1, 2, 1])])

字符串去重

console.log([...new Set('aabbccd')].join(''))

Map

Map 和对象都是键值对的集,但是Map“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键

Map 实例的属性和方法

set

使用 set 添加的新成员,键如果已经存在,后添加的键值对覆盖已有的,返回值为该map对象

const m = new Map()
m.set('age', 18).set('name', 'alex').set('age', 111)

get

get方法读取key对应的键值,如果找不到key,返回undefined

const m=new Map()
m.set('age',18).set('name','alex').set('age',111)
console.log(m.get('name') // 'alex'

has

has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中

const m = new Map()
m.set('age', 18).set('name', 'alex').set('age', 111)
console.log(m.has('name')) // true

delete

delete方法删除某个键,返回true。如果删除失败,返回false

const m = new Map()
m.set('age', 18).set('name', 'alex').set('age', 111)
m.delete('name') // true

clear

清除所有成员没有返回值

const m = new Map()
m.set('age', 18).set('name', 'alex').set('age', 111)
m.clear()

forEach

const m = new Map()
m.set('age', 18).set('name', 'alex').set('age', 111)
m.forEach(function (value, key, map) {
  console.log(value, key, map)
}, 这里修改this指向)

size

// 看下 imooc 怎么讲的

返回 Map 结构的成员总数

Map 构造函数的参数

数组

只能传二维数组,而且必须体现出键和值

const m = new Map([
  ['name', 'alex'],
  ['age', 18],
])
console.log(m)

Set

Set 中也必须体现出键和值,和二维数组类似

const s = new Set([
  ['age', 123],
  ['name', 'frank'],
])
const m = new Map(s)
console.log(m) // Map { 'age' => 123, 'name' => 'frank' }

Map

传入 Map 相当于复制了一个全新的 Map

Map 判断重复的方式

判断重复的方式和Set相同

上次编辑于:
本站勉强运行 小时
本站总访问量
網站計數器