我在尝试将当前JSON结构转换为另一个时遇到问题:
var data = [
{"province":"PROVINCEA","city":"CITYA","shopName":"shop name1","address":"shop address1","tel":"phone number1"},
{"province":"PROVINCEA","city":"CITYA","shopName":"shop name2","address":"shop address2","tel":"phone number2"},
{"province":"PROVINCEA","city":"CITYB","shopName":"shop name3","address":"shop address3","tel":"phone number3"},
{"province":"PROVINCEA","city":"CITYB","shopName":"shop name4","address":"shop address4","tel":"phone number4"},
{"province":"PROVINCEB","city":"CITYC","shopName":"shop name5","address":"shop address5","tel":"phone number5"},
{"province":"PROVINCEB","city":"CITYC","shopName":"shop name6","address":"shop address6","tel":"phone number6"},
{"province":"PROVINCEB","city":"CITYD","shopName":"shop name7","address":"shop address7","tel":"phone number7"},
{"province":"PROVINCEB","city":"CITYD","shopName":"shop name8","address":"shop address8","tel":"phone number8"},
]
我希望将数据转换为这样的输出结构。
这是我想要实现的结果的片段。
var output = {
"PROVINCEA": {
"CITYA": {
"shop name1":{
"shop address1": ["phone number1"]
},
"shop name2":{
"shop address2": ["phone number2"]
},
},
"CITYB": {
"shop name3":{
"shop address3": ["phone number3"]
},
"shop name4":{
"shop address4": ["phone number4"]
},
}
},
"PROVINCEB": {
"CITYC": {
"shop name5":{
"shop address1": ["phone number5"]
},
"shop name6":{
"shop address2": ["phone number6"]
},
},
"CITYD": {
"shop name7":{
"shop address7": ["phone number7"]
},
"shop name8":{
"shop address8": ["phone number8"]
},
}
}
}
有人可以帮我解决这个问题吗?我试了几个小时。 使用lodash或下划线或普通JS是可以的。
答案 0 :(得分:0)
在我的头顶,你可以做这样的事情:
let b = _.groupBy(data, 'province');
_.keys(b).forEach((x, index) => {
b[x] = _.groupBy(b[x], 'city');
});
_.keys(b).forEach((x, index) => {
_.keys(b[x]).forEach((y, index) => {
b[x][y] = _.groupBy(b[x][y], 'shopName');
Object.keys(b[x][y]).forEach(z => {
let temp = JSON.parse(JSON.stringify(b[x][y][z][0]));
b[x][y][z] = {};
b[x][y][z][temp.address] = temp.tel;
});
});
});