es6 获取对象的所有值_前端开发必备 - ES6 新特性之 Set和Map数据结构

本文介绍了ES6中的Set和Map数据结构,包括Set的基础使用、数组去重、遍历方法,以及Map的特性、遍历方式和与其他数据结构的转换。Set用于创建唯一值的集合,Map则提供了键值对的存储,键可以是任意类型。
摘要由CSDN通过智能技术生成

往期回顾:

前端开发必备 - ES6 新特性之 let 和 const 命令

前端开发必备 - ES6 新特性之 变量的解构赋值

前端开发必备 - ES6 新特性之 字符串的拓展

前端开发必备 - ES6 新特性之 正则的拓展

前端开发必备 - ES6 新特性之 数值的拓展

前端开发必备 - ES6 新特性之 对象的拓展

前端开发必备 - ES6 新特性之 Symbol

10.1 Set

介绍:

Set数据结构类似数组,但所有成员的值唯一。

Set本身为一个构造函数,用来生成Set数据结构,使用add方法来添加新成员。

69927e84c25fbc0c85e02cced3b5dda6.png

基础使用:

1cce127416a548c3cc6354752bba9eb8.png

注意:

  • 向Set中添加值的时候,不会类型转换,即5和'5'是不同的。
eb686e259224285aad0f301a3428f88d.png

属性和方法:

  • 属性:
  • Set.prototype.constructor:构造函数,默认就是Set函数。
  • Set.prototype.size:返回Set实例的成员总数。
  • 操作方法:
  • add(value):添加某个值,返回 Set 结构本身。
  • delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
  • has(value):返回一个布尔值,表示该值是否为Set的成员。
  • clear():清除所有成员,没有返回值。
944f07cf22de8f040f94ab7791b04fc4.png

数组去重:

274c229cefebafe66f31fb23f18e2a9c.png

10.2 Set的应用

数组去重:

401712d5650f9b8b3357d94b16d29b72.png

遍历和过滤:

913a9208cf579dc7477619bffd0dfc94.png

获取并集、交集和差集:

c712499295e51336e5edcb5760cd79ee.png
  • 遍历方法:
  • keys():返回键名的遍历器。
  • values():返回键值的遍历器。
  • entries():返回键值对的遍历器。
  • forEach():使用回调函数遍历每个成员。

Set遍历顺序是插入顺序,当保存多个回调函数,只需按照顺序调用。但由于Set结构没有键名只有键值,所以keys()和values()是返回结果相同。

af21ba3e7cc943c74663a6a553951993.png

并且 还可以使用for...of直接遍历Set。

450eef2bb37646320f0f6421a39031c5.png

forEach与数组相同,对每个成员执行操作,且无返回值。

973f6a2c5757e479a6d8a843fb6056e1.png

10.3 Map

由于传统的JavaScript对象只能用字符串当做键,给开发带来很大限制,ES6增加Map数据结构,使得各种类型的值(包括对象)都可以作为键。

Map结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。 基础使用:

e6bfb57bb20fdbcc8db00728e3f8ca58.png

注意:

  • 传入数组作为参数,指定键值对的数组。
298c8374f959c112f4a8688332119003.png
  • 如果对同一个键多次赋值,后面的值将覆盖前面的值。
cbd097f4b87381ab73974125b1015989.png
  • 如果读取一个未知的键,则返回undefined。
a5a1c6fc04a166b8345c7fc54b00f595.png
  • 同样的值的两个实例,在 Map 结构中被视为两个键。
a11cdabcb39851456286a266202330cb.png

遍历方法: Map 的遍历顺序就是插入顺序。

  • keys():返回键名的遍历器。
  • values():返回键值的遍历器。
  • entries():返回所有成员的遍历器。
  • forEach():遍历 Map 的所有成员。
74bcf70aef2d6380b829332bd4c830cc.png

将Map结构转成数组结构:

3c2bdb2072108d00f55c7820334df962.png

10.4 Map与其他数据结构互相转换

  • Map 转 数组
397c2d7780d4395d56ebcc2001139c12.png
  • 数组 转 Map
135ce2d66149ebc096d0f46ed3442415.png
  • Map 转 对象 如果所有 Map 的键都是字符串,它可以无损地转为对象。

如果有非字符串的键名,那么这个键名会被转成字符串,再作为对象的键名。

a2b46eb9a0d4791008ccbf88ffbe4e29.png
  • 对象 转 Map
a62601c4957ec88e790fb0b31de04991.png
  • Map 转 JSON

(1)Map键名都是字符串,转为对象JSON:

58ad5431c85dfedc83e7c35710e69a15.png

(2)Map键名有非字符串,转为数组JSON:

fd95e5523de8b6b194952bb9b6a5ed29.png
  • JSON 转 Map
  • (1)所有键名都是字符串:
dbd0d1abcb7e02eed7bcfd1e69e34f21.png

(2)整个 JSON 就是一个数组,且每个数组成员本身,又是一个有两个成员的数组:

1c49db843f6a5d57edb85a9b4a5bd15a.png

公众号:前端自习课

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值