js中Set和Map的实例方法

51次阅读

共计 2321 个字符,预计需要花费 6 分钟才能阅读完成。

Set 集合

类似于数组, 但是成员的值都是唯一的, Set本身是一个构造函数
用来生成 Set 数据结构
Set 结构的实例方法

  • add()

添加值, 返回 Set 结构本身

const set = new Set()
set.add(1)
set.add(1)
set.add(2)
console.log(set) //Set {1, 2}
  • delete()

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

let set = new Set()
set.add(1)
set.delete(1) //true
console.log(set) //Set {}
  • has()

返回布尔值, 判断 Set 对象中是否含有某值

let set = new Set()
set.add('hello')
set.add('world')
set.has('hello') //true
set.has(1) //false
  • clear()

移除所有元素, 没有返回值

  • keys()

返回一个 Iterator 对象, 对象按照原 Set 对象元素
的插入顺序返回其所有元素

let set = new Set()
set.add('hello')
set.add('world')

const keys = set.keys()
console.log(keys) //{'hello', 'world'}
console.log(keys.next().value) //hello
console.log(keys.next().value) //world
  • values()

keys() 用法一样, 返回 Iterator 对象, 返回值也与 keys() 一样

  • entries()

返回一个键值对形式的迭代器, 类似 [value, value] 形式的数组
value 是集合中的每个元素

let set = new Set()
set.add('hello')
set.add('world')

const entries = set.entries()
console.log(entries.next().value) //['hello', 'hello']
console.log(entries.next().value) //['world', 'world']

`Map 集合

类似于对象, 是键值对的集合, 数据可为任意类型, 与 Object 的区别在于
Object 的键只能是字符串或者 Symbols, 但Map 可以为任意类型, 且 Map
中的键值是有序的
Map 结构的实例方法

  • set(key, value)

设置键值对, 返回整个 Map() 结构, 若对应键已有值则覆盖原有的值

let map = new Map()
map.set('name', 'lil')
console.log(map) //{'name' => 'lil'}
  • get(key)

获取 key 对应的键值, 若没有则返回undefined

let map = new Map()
map.set('name','lil')
console.log(map.get('name')) //lil
  • has(key)

返回布尔值, 查询 key 是否在当前对象中

let map = new Map()
map.set('name','lil')
console.log(map.has('name')) //true
console.log(map.has('age')) //false
  • delete(key)

删除 key 对应的键值对, 删除成功返回 true 否则返回false

let map = new Map()
map.set('name','lil')
console.log(map.delete('name')) //true
console.log(map) //{}
  • clear()

清除所有键值对, 没有返回值

  • keys()

返回新的 Iterator 对象, 按顺序插入 Map 对象中所有key

let map = new Map()
map.set('name','lil')
map.set('age','21')
map.set('gender','male')

console.log(map.keys()) //{'name', 'age', 'gender'}
  • values()

返回新的 Iterator 对象, 按顺序插入 Map 对象中所有value

let map = new Map()
map.set('name','lil')
map.set('age','21')
map.set('gender','male')

console.log(map.keys()) //{'lil', '21', 'male'}
  • entries()

返回新的 Iterator 对象, 按顺序插入 Map 对象中每个元素的
[key,value] 数组

let map = new Map()
map.set('name','lil')
map.set('age','21')
map.set('gender','male')

console.log(map.entries())
//{[ 'name','lil'],['age','21'],['gender','male'] }
  • forEach(callback,thisArg)

callback(key,value,Map)必选, 对象中每个元素都要执行的回调函数

key- 当前元素的键
value- 当前元素的值
Map- 当前正在遍历的对象

thisArg可选, 回调函数执行时的 this 的值
forEach() 返回值为undefined

let map = new Map()
map.set('name','lil')
map.set('age','21')
map.set('gender','male')

map.forEach((value, key)=> {console.log(key+'='+value)
})
//name = lil
//age = 21
//gender = male

正文完
 0