我有一个RESTful调用,该调用返回的数据类似于以下内容:

[{
  name: "one",
  dayID: "Tuesday},
 {
   name: "two",
   dayID: "Monday"
 },
 {
   name: 'three'
   dayID: "Tuesday
 }]


我想做的是遍历数据并创建一个具有基于唯一属性的嵌套结构的新数组。因此,如果数组已经有星期一,则将json推送到该对象。如果没有,请换一个新的。在这种情况下,将所有对象嵌套在一天中,因此新数组将如下所示:

[{"Monday":["two"]}, {"Tuesday":["one", "three"]}]


实际上它们不是字符串,而是其他对象,但是为了简单起见,我在示例中要求使用字符串。任何帮助表示赞赏。

最佳答案

因为键是唯一的,所以您可以只返回对象而不是数组。



var data = [{
  name: "one",
  dayID: "Tuesday"
}, {
  name: "two",
  dayID: "Monday"
}, {
  name: 'three',
  dayID: "Tuesday"
}]

var result = data.reduce(function(r, e) {
  if (!r[e.dayID]) r[e.dayID] = [e.name];
  else r[e.dayID].push(e.name);
  return r;
}, {})

console.log(result)

07-25 21:35