2016-07-05 124 views
-3

我有此JSON重组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的处理呢?

+1

您是否尝试过的东西? –

+1

JavaScript没有内置的功能,因此您需要循环并处理它。 – epascarello

+1

如果你说“你想以这种方式检索它”,你只需要问给你提供JSON的人重构它。但是你也可以自己重组它。只需查看数组,获取id,检查该id是否已经存在于目标数组中,如果是,则只添加该值,否则添加整个项目。瞧。 –

回答

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

+0

它像一个魅力感谢队友:) – Gobakabana

0

你可以使用一些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);