【问题标题】:NodeJS JSON StructureNodeJS JSON 结构
【发布时间】:2019-07-04 07:12:07
【问题描述】:

我目前有一个结构如下的 json 数组:

[{"id": 1, "meeting": "1/3/2015 12:30:00 PM", "name": "John"},
{"id": 1, "meeting": "1/3/2015 13:30:00 PM"}, "name": "John"},
{"id": 2, "meeting": "1/5/2015 7:00:00 AM"}, "name": "Peter"},
{"id": 2, "meeting": "1/5/2015 8:00:00 AM"}, "name": "Peter"}]

如何将数组的结构更改为如下所示?

[ {"id": 1, "name": "John", "meeting": [{"Time": "1/3/2015 12:30:00 PM", "Time": "1/3/2015 13:30:00 PM"}]},
{"id": 2, "name": "Peter", "meeting": [{"Time": "1/5/2015 7:00:00 AM", "Time": "1/5/2015 8:00:00 AM"}]}]

【问题讨论】:

  • 我假设您想按元素的 id 对元素进行分组。根据这个例子,最后一个元素不应该也有 id 2 吗?
  • 首先,这不是 JSON。这是一个 Javascript 数组。 JSON 是 text format
  • @ArtemKobets 是的。这就是我想要实现的目标

标签: javascript arrays node.js json object


【解决方案1】:

你应该使用Array.prototype.reduce:

const data = [{"id": 1, "meeting": "1/3/2015 12:30:00 PM", "name": "John"}, {"id": 1, "meeting": "1/3/2015 13:30:00 PM", "name": "John"}, {"id": 2, "meeting": "1/5/2015 7:00:00 AM", "name": "Peter"}, {"id": 2, "meeting": "1/5/2015 8:00:00 AM", "name": "Peter"}];

//I fixed a typo in the above array

const merged = data.reduce((acc, { id, meeting, name }) => {
    if (acc.some(e => e.id == id)) {
        acc.find(e => e.id == id).meeting.push(meeting);
    } else {
        acc.push({ "id": id, "name": name, "meeting": [meeting]});
    }
    return acc;
}, []);

console.log(merged);

【讨论】:

  • 没问题@DanielFer。
猜你喜欢
  • 1970-01-01
  • 2012-06-03
  • 2015-01-21
  • 2017-05-21
  • 2019-03-24
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多