Javascript 将一个JSON结构转换为另一个JSON结构
我在尝试将当前JSON结构转换为其他JSON结构时遇到问题:Javascript 将一个JSON结构转换为另一个JSON结构,javascript,json,underscore.js,lodash,Javascript,Json,Underscore.js,Lodash,我在尝试将当前JSON结构转换为其他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 addres
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就可以了。就在我的头顶上,你可以这样做:
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;
});
});
});
也许结果与我预期的略有不同