原始数据,其内部 opInfoMap 数组中的数据是乱序排列的,希望其能按照 taskStatus 顺序排列
const mockData = [
{
areaId: "1701618149f89accf2c06549d2022eeb",
areaName: "1215-活动6",
opInfoMap: [
{
count: 836,
percent: "82.53%",
taskStatus: 4,
},
{
count: 177,
percent: "17.47%",
taskStatus: 5,
},
{
count: 0,
percent: "0%",
taskStatus: 1,
},
{
count: 0,
percent: "0%",
taskStatus: 2,
},
{
count: 0,
percent: "0%",
taskStatus: 3,
},
],
},
{
areaId: "122687b5aa66018cd1a43fe9c7665071",
areaName: "1215-活动10",
opInfoMap: [
{
count: 2301,
percent: "84.44%",
taskStatus: 4,
},
{
count: 423,
percent: "15.52%",
taskStatus: 5,
},
{
count: 1,
percent: "0.04%",
taskStatus: 1,
},
{
count: 0,
percent: "0%",
taskStatus: 2,
},
{
count: 0,
percent: "0%",
taskStatus: 3,
},
],
},
];
期望格式:
const expectData = [
{
areaId: "1701618149f89accf2c06549d2022eeb",
areaName: "1215-活动6",
opInfoMap: [
{
count: 0,
percent: "0%",
taskStatus: 1,
},
{
count: 0,
percent: "0%",
taskStatus: 2,
},
{
count: 0,
percent: "0%",
taskStatus: 3,
},
{
count: 836,
percent: "82.53%",
taskStatus: 4,
},
{
count: 177,
percent: "17.47%",
taskStatus: 5,
},
],
},
{
areaId: "122687b5aa66018cd1a43fe9c7665071",
areaName: "1215-活动10",
opInfoMap: [
{
count: 1,
percent: "0.04%",
taskStatus: 1,
},
{
count: 0,
percent: "0%",
taskStatus: 2,
},
{
count: 0,
percent: "0%",
taskStatus: 3,
},
{
count: 2301,
percent: "84.44%",
taskStatus: 4,
},
{
count: 423,
percent: "15.52%",
taskStatus: 5,
},
],
},
];
实现:
const sortopInfoMapData = (data, name) => {
const sortBy = (field) => {
//根据传过来的字段进行排序
return (x, y) => {
return x[field] - y[field];
};
};
data.map((obj) => {
obj.opInfoMap.sort(sortBy(name));
return obj;
});
return data;
};
sortopInfoMapData(mockData, 'taskStatus')