首页 > 解决方案 > 如何按日期对注册用户进行分组

问题描述

我在 Angular 和 Firebase 中按注册日期对用户文档进行分组时遇到问题

和文件就像

email "demo1@gmail.com"
gender "male"
id "42PWIOI0OiMtyOpfu7tfK34apj92"
name "John Doe"
phone "+1765435689"
reg_date April 2, 2019 at 2:10:09 PM UTC+3


email "demo2@gmail.com"
gender "female"
id "96PWHDI0OiMtyOpfu7tfK34apj92"
name "Jane Doe"
phone "+187643489"
reg_date April 4, 2019 at 6:10:09 PM UTC+3

email "demo3@gmail.com"
gender "male"
id "55PWIUTGDiMtyOpfu7tfK34apj92"
name "Wlly Doe"
phone "+1768885689"
reg_date April 2, 2019 at 2:10:09 PM UTC+3


email "demo4@gmail.com"
gender "male"
id "96PWHDI0OiMtyOpfu7tfK34apj92"
name "Olie Doe"
phone "+187643489"
reg_date April 4, 2019 at 2:10:09 PM UTC+3

所需的结果是按 reg_date 对数据进行分组

标签: angularfirebase

解决方案


我不确定您到底需要什么,但这是将它们分组的一种方法reg_date。我使用Array.reduce(),然后使用Object.Assign()创建一个新对象,并将其reg_date作为“主要”属性。

const data = [{
    email: "demo1@gmail.com",
    gender: "male",
    id: "42PWIOI0OiMtyOpfu7tfK34apj92",
    name: "John Doe",
    phone: "+1765435689",
    reg_date: "April 2, 2019 at 2:10:09 PM UTC+3"
  },
  {
    email: "demo2@gmail.com",
    gender: "female",
    id: "96PWHDI0OiMtyOpfu7tfK34apj92",
    name: "Jane Doe",
    phone: "+187643489",
    reg_date: "April 4, 2019 at 6:10:09 PM UTC+3"
  },
  {
    email: "demo3@gmail.com",
    gender: "male",
    id: "55PWIUTGDiMtyOpfu7tfK34apj92",
    name: "Wlly Doe",
    phone: "+1768885689",
    reg_date: "April 2, 2019 at 2:10:09 PM UTC+3"
  },
  {
    email: "demo4@gmail.com",
    gender: "male",
    id: "96PWHDI0OiMtyOpfu7tfK34apj92",
    name: "Olie Doe",
    phone: "+187643489",
    reg_date: "April 4, 2019 at 2:10:09 PM UTC+3"
  }
]

const result = data.reduce((h, obj) => Object.assign(h, {
  [obj['reg_date']]: (h[obj['reg_date']] || []).concat(obj)
}), {});

console.log(result);


推荐阅读