我有以下json:
[
{
'con': 'Usa',
'city': 'ny',
'town':'as'
},
{
'con': 'Ger',
'city': 'ber',
'town':'zd'
},
{
'con': 'Usa',
'city': 'la',
'town':'ss'
}
]
并且我想将此json重新创建为新结构,以便不具有相同的'con'值,新结构应如下所示:
[{
"con": "usa",
"area": [{
"city": "ny",
"town": "as"
}, {
"city": "la",
"town": "ss"
}]
},
{
"con": "ger",
"area": [{
"city": "ber",
"town": "zd"
}]
}
]
您知道如何执行此操作。谢谢
答案 0 :(得分:0)
一种替代方法是使用功能Array.prototype.reduce
来对country
进行分组,同时使用功能Object.values
来提取分组的对象。
let arr = [{ 'con': 'Usa', 'city': 'ny', 'town': 'as' }, { 'con': 'Ger', 'city': 'ber', 'town': 'zd' }, { 'con': 'Usa', 'city': 'la', 'town': 'ss' }],
result = Object.values(arr.reduce((a, {con, ...rest}) => {
(a[con] || (a[con] = {con, area: []})).area.push(rest);
return a;
}, Object.create(null)));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }