将
let list = [
{
"cameraName": "摄像头1",
"switchStatus": 1,
"hookUrl": "1",
"cameraId": "1",
"cameraLocation": "东侧大门"
},
{
"cameraName": "摄像头2",
"switchStatus": 1,
"hookUrl": "1",
"cameraId": "22",
"cameraLocation": "西侧大门"
},
{
"cameraName": "摄像头3",
"switchStatus": 1,
"hookUrl": "1",
"cameraId": "3",
"cameraLocation": "西侧大门"
}
]
转换为
[{
"title": "东侧大门",
"list": [{
"cameraName": "摄像头1",
"switchStatus": 1,
"hookUrl": "1",
"cameraId": "1"
}]
}, {
"title": "西侧大门",
"list": [{
"cameraName": "摄像头2",
"switchStatus": 1,
"hookUrl": "1",
"cameraId": "22"
}, {
"cameraName": "摄像头3",
"switchStatus": 1,
"hookUrl": "1",
"cameraId": "3"
}]
}]
可以封装一个方法
方法1:
const groupBy = (datas, key) => {
if (datas) {
const result = datas.reduce((previousValue, currentValue) => {
const { cameraLocation } = currentValue;
if (Object.keys(previousValue).includes(cameraLocation)) {
return {
...previousValue,
[cameraLocation]: [...previousValue[cameraLocation], currentValue],
};
} else {
return {
...previousValue,
[cameraLocation]: [currentValue],
};
}
}, {});
console.log('result',result,Object.entries(result));
return Object.entries(result).map(([key, value]) => {
if (value.length !== 0) {
return {
parentFormatName: key,
data: value,
};
}
});
}
// return Object.entries(result).map(([key, value]) => ({
// parentFormatName: key,
// data: value,
// }));
};
方法2:
const myList = (list) => list.reduce((ls, item) => {
const { cameraLocation, ...rest } = item
// console.log(ls, item);
// console.log(cameraLocation, rest);
const myItem = ls.find(child => child.title === cameraLocation)//{ title: cameraLocation, arr: [rest] }
if (myItem) {
myItem.arr.push(rest)
// console.log(myItem.arr);
} else {
ls.push({ title: cameraLocation, arr: [rest] })
}
return ls
}, [])