let arr = [
{
name: "主场馆",
value: "摄像头一"
},
{
name: "主场馆",
value: "摄像头二"
},
{
name: "主场馆",
value: "摄像头三"
},
{
name: "体育馆",
value: "摄像头一"
},
{
name: "体育馆",
value: "摄像头二"
},
{
name: "体育馆",
value: "摄像头三"
}
];
Object.entries(
arr.reduce(
(prev, next) => ({
...prev,
[next.name]: [...(prev[next.name] || []), next.value]
}),
{}
)
).map(([name, value]) => ({ name, value }));
优化后
Object.entries(
arr.reduce(
(prev, next) => ({
...prev,
[next.name]: [...(prev[next.name] || []), { ...next }]
}),
{}
)
).map(([name, value]) => ({ name, value }));
得到结果
let newArr = [
{
name: "主场馆",
values: [{
cameraName:"摄像头一",
unit:'a',
type:'类型一'
},
{
cameraName:"摄像头二",
unit:'b',
type:'类型二'
},{
cameraName:"摄像头三",
unit:'c',
type:'类型三'
}],
},
{
name: "体育馆",
values: [{
cameraName:"摄像头一",
unit:'a',
type:'类型一'
},
{
cameraName:"摄像头二",
unit:'b',
type:'类型二'
},{
cameraName:"摄像头三",
unit:'c',
type:'类型三'
}],
},
];