重新组合json数组

时间:2016-07-05 12:27:21

标签: javascript arrays json format

我有这个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处理它?<​​/ p>

2 个答案:

答案 0 :(得分:0)

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

&#13;
&#13;
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);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

试试这样。

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