我如何获得这样的对象数组:
let data = [
{
"FirstName": "TRACY",
"Code": "CCI41",
"UtilName": "Cable",
"gridid": 570
},
{
"FirstName": "ANGELA",
"Code": "TWCZ40",
"UtilName": "Cable",
"gridid": 570
},
{
"FirstName": "WILFORD",
"Code": "TCE12",
"UtilName": "Electric",
"gridid": 570
},
{
"FirstName": "COREY",
"Code": "SCEJZ40",
"UtilName": "Electric",
"gridid": 570
},
{
"FirstName": "ERNEST",
"Code": "SGRAZ01",
"UtilName": "Fiber",
"gridid": 570
},
{
"FirstName": "WILFORD",
"Code": "TCE12",
"UtilName": "Fiber",
"gridid": 570
},
{
"FirstName": "COREY",
"Code": "SCGZ02",
"UtilName": "Gas",
"gridid": 570
},
{
"FirstName": "ANGELO",
"Code": "BSZT29",
"UtilName": "Phone",
"gridid": 570
}
]并将其转换为这样的数组,其中包含按每个gridid分组的每个UtilName
let newArr = [
{
570: [
{
"Cable": [
{
"FirstName": "Tracey",
"Code": "CCI41"
}, {
"FirstName": "ANGELA",
"Code": "TWCZ40"
}
],
"Electric": [
{
"FirstName": "WILFORD",
"Code": "TCE12"
}, {
"FirstName": "COREY",
"Code": "SCEJZ40"
}
],
"Fiber": [
{
"FirstName": "WILFORD",
"Code": "TCE12"
}
],
"Gas": [
{
"FirstName": "COREY",
"Code": "SCGZ02"
}
],
"Phone": [
{
"FirstName": "ANGELO",
"Code": "BSZT29"
}
]
}
]
}
]它可以以其他方式构建,但目标是将每个人分组到一个gridid和UtilName中。
发布于 2022-06-15 18:39:59
let data = [
{"FirstName": "TRACY","Code": "CCI41","UtilName": "Cable","gridid": 570},
{"FirstName": "ANGELA","Code": "TWCZ40","UtilName": "Cable","gridid": 570},
{"FirstName": "WILFORD","Code": "TCE12","UtilName": "Electric","gridid": 570},
{"FirstName": "COREY","Code": "SCEJZ40aa","UtilName": "Electric","gridid": 570},
{"FirstName": "COREY","Code": "SCEJZ40","UtilName": "Electric","gridid": 580},
{"FirstName": "COREY","Code": "SCEJZ40a","UtilName": "Electric","gridid": 580}
];
let expected_output = {}
data.forEach(elem => {
if(!(elem['gridid'] in expected_output)){
expected_output[elem['gridid']] = [{}]
}
if(!(elem['UtilName'] in expected_output[elem['gridid']][0])){
expected_output[elem['gridid']][0][elem['UtilName']] = []
}
const j = expected_output[elem['gridid']][0][elem['UtilName']].length
expected_output[elem['gridid']][0][elem['UtilName']][j] = {'FirstName' : elem['UtilName'],'Code' : elem['Code']}
});
console.log(expected_output)
因此,可以将expected_output[elem['gridid']] = [{}]替换为expected_output[elem['gridid']] = {},可以删除答案中的[0]
发布于 2022-06-15 19:20:39
下面是一个更动态的方法,您可以更改层次结构键,并在需要时添加更多:
let data = [
{
"FirstName": "TRACY",
"Code": "CCI41",
"UtilName": "Cable",
"gridid": 570
},
{
"FirstName": "ANGELA",
"Code": "TWCZ40",
"UtilName": "Cable",
"gridid": 570
},
{
"FirstName": "WILFORD",
"Code": "TCE12",
"UtilName": "Electric",
"gridid": 570
},
{
"FirstName": "COREY",
"Code": "SCEJZ40",
"UtilName": "Electric",
"gridid": 570
},
{
"FirstName": "ERNEST",
"Code": "SGRAZ01",
"UtilName": "Fiber",
"gridid": 570
},
{
"FirstName": "WILFORD",
"Code": "TCE12",
"UtilName": "Fiber",
"gridid": 570
},
{
"FirstName": "COREY",
"Code": "SCGZ02",
"UtilName": "Gas",
"gridid": 570
},
{
"FirstName": "ANGELO",
"Code": "BSZT29",
"UtilName": "Phone",
"gridid": 570
}
];
function restructure(arr,layer1,layer2){
let result = {};
data.forEach(e=>{
if(!result.hasOwnProperty(e[layer1])) result[e[layer1]] = {};
if(!result[e[layer1]].hasOwnProperty(e[layer2])) result[e[layer1]][e[layer2]] = [];
let cleanOutput = {...e};
delete cleanOutput[layer1];
delete cleanOutput[layer2];
result[e[layer1]][e[layer2]].push(cleanOutput);
});
return result;
}
console.log(restructure(data,"gridid","UtilName"));
https://stackoverflow.com/questions/72635956
复制相似问题