We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在日常开发中,使用 Map、Set 的场景有哪些?
Map
Set
Map 是 ES6 中新增的一种引用数据类型。
Object.prototype.toString.call(new Map()) // "[object Map]"
常与 Object 作比较,主要区别如下:
Object
Object.create(null)
__proto__
String
Symbol
既然它是一个可迭代对象,自然就很方便地被解构、扩展运算符、for...of、Array.from() 等消费。
for...of
Array.from()
new Map()[Symbol.iterator] // ƒ entries() { [native code] }
其构造函数可接受一个可迭代对象作为参数,可选。
new Map([iterable])
通常是 [[key, value], ...] 形式。比如:
[[key, value], ...]
const map = new Map([ [1, 'one'], [2, 'two'], [3, 'three'], ])
也可使用链式形式插入键值。
const map = new Map() .set(1, 'one') .set(2, 'two') .set(3, 'three')
它只提供了两个实例属性。
Map.prototype.size
只读,返回实例对象的键值对数量。对比 Object 的 Object.keys(obj).length,它方便太多了。
Object.keys(obj).length
另一个 @@species 属性太太太少见了,有兴趣自行翻阅。
@@species
它提供了一系列的实例方法,便于对其进行增删改查等操作。
Map.prototype.get() Map.prototype.set() Map.prototype.has() Map.prototype.delete() Map.prototype.clear()
除 clear() 之外,以上其他方法接受一个参数 key,可以是任意类型的值(原始值或引用值)。 get(key) 用于获取指定健的值,若 key 不存在于实例对象,则返回 undefined。 set(key) 用于添加或更新指定健,并返回实例对象,因而可以链式调用。 has(key) 用于判断指定健是否存在,返回布尔值。 delete(key) 用于删除指定健,若健存在且已被删除,则返回 true,否则返回 false。 clear() 用于清空实例对象中所有元素。
clear()
key
get(key)
undefined
set(key)
has(key)
delete(key)
true
false
Map.prototype.keys() Map.prototype.values() Map.prototype.entries()
作用与 Object.keys()、Object.values()、Object.entries() 类似,但不同。 它们三个都返回一个新的迭代器对象(不是 Map 对象,也不是数组),其顺序同原始 Map 对象元素插入的顺序。
Object.keys()
Object.values()
Object.entries()
Map.prototype.forEach()
有且仅有这一个用于遍历的实例方法。别一上来就联想到 Array.prototype.forEach(),虽然都是遍历,但不同,它没有 map()、filter() 等方法。
Array.prototype.forEach()
map()
filter()
未完待续...
The text was updated successfully, but these errors were encountered:
No branches or pull requests
在日常开发中,使用
Map
、Set
的场景有哪些?Map
简介
Map
是 ES6 中新增的一种引用数据类型。常与
Object
作比较,主要区别如下:Object.create(null)
创建的对象之外,一般都有默认键,比如__proto__
等与原型相关的键。String
或Symbol
类型的值。既然它是一个可迭代对象,自然就很方便地被解构、扩展运算符、
for...of
、Array.from()
等消费。构造函数
其构造函数可接受一个可迭代对象作为参数,可选。
通常是
[[key, value], ...]
形式。比如:也可使用链式形式插入键值。
实例属性、方法
它只提供了两个实例属性。
它提供了一系列的实例方法,便于对其进行增删改查等操作。
未完待续...
The text was updated successfully, but these errors were encountered: