javascript - 如何根据子属性将 JSON 排序到数组中

标签 javascript arrays json object for-loop

我有一个 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)

关于javascript - 如何根据子属性将 JSON 排序到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45552710/

相关文章:

javascript - jQuery ajax jsonp 意外标记 :

javascript - 在 javascript 和 CSS 中为禁用的输入文本框设置工具提示

javascript - Mongoose:如何在变量给定的索引处更新数组中的值?

python - 为什么 python 列表比 numpy 数组能容纳更多数据?

json - 如何使用JSon填充@ html.dropdownlist mvc帮助器

javascript - 如何在数组中正确使用 axios 参数

javascript - Mozilla 和 IE 修改了我的下拉列表的外观,但 chrome 没有

arrays - 如何在 Swift 中使用索引和元素迭代循环

ios - 无法从字符串获取 JSON

Javascript:如果我不知道对象的键,如何访问嵌套对象中的值?