根据对象中键的值对数组中的对象进行分组

2023-12-13

我有以下数据,我想根据日期进行排序 - 不包括时间戳。

NOTE:我可以访问moment为了这个任务。

我的数据如下所示:

const data = [
   {
     "fixture": "AC v Inter",
     "kickOffTime": "2018-06-14T15:00:00Z",
   },
   {
     "fixture": "DC v NYC",
     "kickOffTime": "2018-06-15T12:00:00Z",
   },
   {
     "fixture": "AFC v LPC",
     "kickOffTime": "2018-06-15T15:00:00Z",
   },
   {
      "fixture": "DTA v MC",
      "kickOffTime": "2018-06-15T18:00:00Z",
    },
    {
       "fixture": "LAC v GC",
       "kickOffTime": "2018-06-16T18:00:00Z",
    }
];

我尝试了多种方法。我希望达到的最终结果是以下数据结构。

const updatedDataStructure = [
   {
     date: "2018-06-14",
     fixtures: [{
        "fixture": "AC v Inter",
        "kickOffTime": "2018-06-14T15:00:00Z",
      }]
   },
   {
     date: "2018-06-15",
     fixtures: [
      {
        "fixture": "DC v NYC",
        "kickOffTime": "2018-06-15T12:00:00Z",
       }, 
      {
        "fixture": "AFC v LPC",
       "kickOffTime": "2018-06-15T15:00:00Z",
      },
      {
        "fixture": "DTA v MC",
        "kickOffTime": "2018-06-15T18:00:00Z",
       },
     ]
   }, 
   {
     date: "2018-06-16",
     fixtures: [{
         "fixture": "LAC v GC",
         "kickOffTime": "2018-06-16T18:00:00Z",
     }]
   },
];

这是我最近的尝试,几乎成功了:

const result = fixtures.reduce(function (r, a) {
  r[moment(a.kickOffTime).format('ddd Do MMM')] = r[moment(a.kickOffTime).format('ddd Do MMM')] || [];
  r[moment(a.kickOffTime).format('ddd Do MMM')].push(a);
  return r;
}, Object.create(null));

您可以使用以下方法对数组进行分组reduce成一个物体。使用Object.values您可以将对象转换为数组。

const data = [{
    "fixture": "AC v Inter",
    "kickOffTime": "2018-06-14T15:00:00Z",
  },
  {
    "fixture": "DC v NYC",
    "kickOffTime": "2018-06-15T12:00:00Z",
  },
  {
    "fixture": "AFC v LPC",
    "kickOffTime": "2018-06-15T15:00:00Z",
  },
  {
    "fixture": "DTA v MC",
    "kickOffTime": "2018-06-15T18:00:00Z",
  },
  {
    "fixture": "LAC v GC",
    "kickOffTime": "2018-06-16T18:00:00Z",
  }
];

const result = Object.values(data.reduce((c, v) => {
  let t = v['kickOffTime'].split('T', 1)[0];
  c[t] = c[t] || {date: t,fixtures: []}
  c[t].fixtures.push(v);
  return c;
}, {}));

console.log(result);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据对象中键的值对数组中的对象进行分组 的相关文章

随机推荐

  • iPhone 上的网络可达性

    也许有一个好方法来确定我是否有互联网连接 3G或无线网络 谢谢 以下是一个名为 Google 的新搜索引擎揭示的内容 iPhone SDK 测试网络可达性
  • 仅当匹配阈值字节时才填充映射中的字符串值

    我有一个tasks我正在迭代并将每个任务对象附加到的列表对象StringBuilder随后是新行 如下所示 现在 我将继续在同一字符串生成器中附加任务对象 直到其达到 60000 字节的大小限制 一旦达到限制 我将将此字符串填充为映射中的值
  • 使用 php 的简单水平条形图

    我见过一个 Facebook 应用程序 其中单击单选按钮会呈现一个图表 如下所示 我想知道是否有任何类似的图形库可以通过它在 php 中生成相同的图形 Thanks Pankaj 实际上 生成这种图非常简单 只需使用两个DIVs 一个是 1
  • 使用 PHP 将表单数据从一个网页传递到另一个网页

    我在这里发现了一些类似的问题 但从答案中我没有完全了解应该如何工作 我在页面中有一个订阅表格
  • 实施 30 天计时试验 [已关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 独立 Mac 开发者的问题 如何以非邪恶的方式实施 30 天计时赛 在首选项中放
  • 如何在JAVA中将两个int合并为一个double?

    如果我有 int a 123 int b 456 如何得到 double c 123 456 这个怎么样 int a 123 int b 456 double c Double parseDouble a b
  • 使用具有固定页眉和页脚的 css 可变内容 div 高度

    我在使用 CSS 时遇到了一些问题 正在向这个精彩的社区寻求帮助 我正在尝试构建一个包含以下元素的布局 1 标题区 2 页脚区域 3 左侧窗格 4 内容区 我提出了以下 CSS 但我不认为这是完成我需要的操作的最佳方式 请在下面找到我正在寻
  • 设计时编辑器支持控件集合

    我想向组件添加一个表示控件集合的属性 并有一个集合编辑器 通过它我可以轻松选择属于该集合的控件 VS确实almost我想要的自动使用以下代码 Private controls As New List Of Control
  • PHP 将 Excel 导出到特定路径?

    是否可以将 PHP MySQL Excel 工作表导出到指定路径 例如 U 盘 这是因为我使用 php 作为销售点 我现在想要的只是单击一个按钮 它将从 MySQL 数据库收集记录并将其作为 excel 或 csv 文件导出到 USB 闪存
  • 具有两个 Y 轴的分组箱线图

    我想使用 GGPLOT2 为同一类别制作两个具有不同信息的箱线图 具有两个 Y 轴 如下图所示 我有区域 AM 和 AR 的两个类别信息 旋转速度和角度 并且我想将这两种运动模式组合在根据区域分组的图形中 到目前为止我的代码如下所示 are
  • C#:0 和 1 排列

    我想列出仅包含 0 和 1 的排列 与二进制类似 但允许可变长度 不必等于 8 长度 例如 0 1 00 01 10 11 000 001 010 011 100 101 110 111 一直到满足X的长度为止 如何才能做到这一点 您还可以
  • “git Remote show origin”:为什么所有分支都显示“已跟踪”,即使有些分支没有?

    为什么 git remote show origin 将远程分支列为 已跟踪 即使这些分支没有链接到本地 分支进行拉 推 在这种情况下 跟踪 还有其他含义吗 我认为这就是 跟踪 的全部含义 关于分支跟踪的 git 文档 1 克隆一个具有多个
  • 如何保持 Google Chrome 扩展弹出窗口打开?

    如果我打开扩展程序弹出窗口 那么我会打开另一个窗口或选项卡 如果我返回弹出窗口 则弹出窗口不会保持打开状态 有没有办法强制它使弹出窗口保持打开状态 As a user 您目前无法强制弹出窗口保持打开状态 这是 UI 团队做出的 UI 决定
  • 使 my_average(a, b) 与定义了 f_add 和 d_div 的任何 a 和 b 一起使用。以及内置函数

    简而言之 我想要的是我编写的大多数数学函数 例如 my average a b 与任何a and b其中一个f add and f div已被定义 不过载 和 且不中断my average built in type built in ty
  • 根据组中唯一/不同值的数量创建二进制变量

    我有数据如下 userID lt c 1 1 1 2 2 2 3 3 3 product lt c a a a b b c a b c df lt data frame userID product 对于每个 userID 我想创建一个二进
  • file_get_contents():SSL 操作失败,代码为 1(证书验证失败)

    我已经安装了 WAMP 3 0 4 并尝试编写一个连接到外部 HTTPS Web 服务的 PHP 脚本 但这会返回错误 警告 file get contents SSL 操作失败 代码为 1 OpenSSL 错误消息 错误 14090086
  • .NET 阻塞套接字读取直到 X 字节可用?

    假设我通过 TCP 实现了简单的协议 其中每条消息由以下部分组成 An int表示数据长度 二进制数据 长度在 1 中指定 读这样的消息我想要这样的东西 int length input ReadInt byte data input Re
  • Three.js - 用于碰撞检测的精确光线投射

    我正在使用 Three js 版本68 我使用与此人在这里使用的相同的方法进行碰撞检测 这在大多数情况下都很棒 向作者表示深深的 感谢 http stemkoski github io Three js Collision Detectio
  • Python 3 虚拟环境问题

    我遇到了类似的问题这个帖子 但我已经在运行最新版本的virtualenv我也得到了不同的ImportError 使用 virtualenv 版本 2 7 默认 工作正常 但我需要将 python3 用于另一个项目 我安装它使用brew in
  • 根据对象中键的值对数组中的对象进行分组

    我有以下数据 我想根据日期进行排序 不包括时间戳 NOTE 我可以访问moment为了这个任务 我的数据如下所示 const data fixture AC v Inter kickOffTime 2018 06 14T15 00 00Z