ES8 新特性实现分组操作

阅读时长 3 分钟读完

在前端开发过程中,经常会遇到需要对对象进行分组的情况,比如按照城市、年龄、性别等字段进行分组,以便进行数据统计或展示。而在ES8中,新的特性 Object.valuesObject.entries 提供了方便、快捷的实现分组操作的方法,大大简化了前端开发过程中的痛点。

Object.values和Object.entries方法

在介绍具体实现分组操作之前,首先需要了解 Object.valuesObject.entries 这两个方法。

Object.values 方法返回一个给定对象自身的所有可枚举值的数组,顺序与手动遍历该对象属性值的顺序相同。

示例代码:

Object.entries 方法返回一个给定对象自身的所有可枚举属性的键值对数组,顺序与手动遍历该对象属性的顺序相同。

示例代码:

值得注意的是,这两个方法返回的数组顺序都是按照对象属性的顺序排序的。如果需要按照某个字段进行分组,则可以通过先排序,再分组来实现。

实现分组操作

有了上面的铺垫,接下来就可以实现分组操作了。

假设我们有一个学生列表数组,每个学生都有姓名、年龄、性别和城市等四个字段。现在需要按照城市和性别两个字段进行分组,以便进行统计和展示。

示例代码:

-- -------------------- ---- -------
----- -------- - -
  - ----- ----- ---- --- ------- ---- ----- ---- --
  - ----- ----- ---- --- ------- ---- ----- ---- --
  - ----- ----- ---- --- ------- ---- ----- ---- --
  - ----- ----- ---- --- ------- ---- ----- ---- --
  - ----- ----- ---- --- ------- ---- ----- ---- -
--

-- -----------
----- ------ - ---
--------------------- -- -
  ----- --- - --------- - --- - ------------
  -- -------------- -
    ----------- - ---
  -
  ----------------------------
---

--------------------

上面的代码首先定义了一个空对象 groups,用来存储分组后的结果。然后遍历学生列表,针对每个学生按照城市和性别两个字段拼接出一个唯一的键值 key,如果 groups 中不存在该键值,则初始化一个空数组,最后将该学生的姓名加入到相应的数组中。

运行上面的代码,可以看到如下输出结果:

可以看到,学生列表已经按照城市和性别两个字段进行了分组,每个分组都对应一个数组,其中包含了各自的学生姓名。

总结

ES8中的新特性 Object.valuesObject.entries 提供了方便、快捷的实现分组操作的方法,可以很好地解决前端开发过程中的对象分组痛点。通过本文的介绍和示例代码,相信读者已经能够掌握分组操作的实现方法,希望能够对读者在实际开发中有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646a4e5f968c7c53b09fbe4d

纠错
反馈