【问题标题】:Regroup json array [closed]重新组合json数组[关闭]
【发布时间】:2016-07-05 12:27:21
【问题描述】:

我有这个 json

[
  {
    "id": "03868185",
    "month_10": 6,
  },
  {
    "id": "03870584",
    "month_6": 2,
  },
  {
    "id": "03870584",
    "month_7": 5,
  },
  {
    "id": "51295",
    "month_1": 1,
  },
  {
    "id": "51295",
    "month_10": 1,
  },
  {
    "id": "55468",
    "month_11": 1,
  }
]

我想检索这种格式:

[
  {
    "id": "03868185",
    "month_10": 6,
  },
  {
    "id": "03870584",
    "month_6": 2,
    "month_7": 5,
  },
  {
    "id": "51295",
    "month_1": 1,
    "month_10": 1,
  },
  {
    "id": "55468",
    "month_11": 1,
  }
]

如何用javascript处理?

【问题讨论】:

  • 你试过了吗?
  • JavaScript 没有内置的功能,因此您需要循环处理它。
  • 如果你说“你想以这种方式检索它”,你只需要让为你提供 JSON 的人重新构建它。但是,您也可以自己对其进行重组。只需查看数组,获取 id,检查该 id 是否已经存在于您的目标数组项中,如果是,则仅添加值,否则添加整个项。瞧。
  • 正如@epascarello 所建议的那样,如果它仍然没有按 id“分组”(或者任何可能是想要的“格式”背后的概念),则将您的最佳尝试添加到问题中。我相信人们会进一步帮助你。

标签: javascript arrays json format


【解决方案1】:

像这样试试。

var array = [
{
"id": "03868185",
"month_10": 6,
},
{
"id": "03870584",
"month_6": 2,
},
{
"id": "03870584",
"month_7": 5,
},
{
"id": "51295",
"month_1": 1,
},
{
"id": "51295",
"month_10": 1,
},
{
"id": "55468",
"month_11": 1,
}
]

var resultArray = array.filter(function(item) {
var ref = this[item.id];
if(!ref) {
 return (this[item.id] = item);
}
else
{
 var keys = Object.keys(item);
 ref[keys[1]] = item[keys[1]];
}
}, {});

console.log(resultArray);

plunker:http://plnkr.co/edit/7onuPTte0Akd4ulbN8Hz?p=preview

【讨论】:

  • 它就像一个魅力谢谢队友:)
【解决方案2】:

您可以使用一些Array#forEach 和哈希表作为参考。

var data = [{ "id": "03868185", "month_10": 6, }, { "id": "03870584", "month_6": 2, }, { "id": "03870584", "month_7": 5, }, { "id": "51295", "month_1": 1, }, { "id": "51295", "month_10": 1, }, { "id": "55468", "month_11": 1, }],
    grouped = [];

data.forEach(function (a) {
    if (!this[a.id]) {
        this[a.id] = {};
        grouped.push(this[a.id]);
    }
    Object.keys(a).forEach(function (k) {
        this[a.id][k] = a[k];
    }, this);
}, Object.create(null));

console.log(grouped);

【讨论】:

    猜你喜欢
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 2022-10-12
    相关资源
    最近更新 更多