如何把req的数组转换为res
const req = [
{ dates: "2023-02-02", index: "1", total: 3 },
{ dates: "2023-02-02", index: "2", total: 0 },
{ dates: "2023-02-03", index: "1", total: 6 },
{ dates: "2023-02-03", index: "2", total: 7 },
{ dates: "2023-02-03", index: "3", total: 3 },
{ dates: "2023-02-03", index: "4", total: 5 },
{ dates: "2023-02-04", index: "2", total: 2 },
{ dates: "2023-02-04", index: "3", total: 7 },
{ dates: "2023-02-04", index: "4", total: 1 },
{ dates: "2023-02-04", index: "5", total: 4 },
{ dates: "2023-02-05", index: "4", total: 3 },
{ dates: "2023-02-05", index: "5", total: 2 },
{ dates: "2023-02-05", index: "6", total: 7 },
{ dates: "2023-02-05", index: "7", total: 1 },
{ dates: "2023-02-06", index: "1", total: 7 },
{ dates: "2023-02-06", index: "2", total: 4 },
{ dates: "2023-02-06", index: "5", total: 3 },
{ dates: "2023-02-06", index: "6", total: 11 },
{ dates: "2023-02-07", index: "3", total: 123 },
{ dates: "2023-02-07", index: "4", total: 7 },
{ dates: "2023-02-07", index: "6", total: 99 },
{ dates: "2023-02-07", index: "7", total: 2 },
];
let res=[
{ index: "1", data: [3, 6, 0, 0, 7, 0] },
{ index: "2", data: [0, 7, 2, 0, 4, 0] },
{ index: "3", data: [0, 3, 7, 0, 0, 123] },
{ index: "4", data: [0, 5, 1, 3, 0, 7] },
{ index: "5", data: [0, 0, 4, 2, 3, 0] },
{ index: "6", data: [0, 0, 0, 7, 11, 99] },
{ index: "7", data: [0, 0, 0, 1, 0, 2] },
];
const req = [
{ dates: "2023-02-02", index: "1", total: 3 },
{ dates: "2023-02-02", index: "2", total: 0 },
{ dates: "2023-02-03", index: "1", total: 6 },
{ dates: "2023-02-03", index: "2", total: 7 },
{ dates: "2023-02-03", index: "3", total: 3 },
{ dates: "2023-02-03", index: "4", total: 5 },
{ dates: "2023-02-04", index: "2", total: 2 },
{ dates: "2023-02-04", index: "3", total: 7 },
{ dates: "2023-02-04", index: "4", total: 1 },
{ dates: "2023-02-04", index: "5", total: 4 },
{ dates: "2023-02-05", index: "4", total: 3 },
{ dates: "2023-02-05", index: "5", total: 2 },
{ dates: "2023-02-05", index: "6", total: 7 },
{ dates: "2023-02-05", index: "7", total: 1 },
{ dates: "2023-02-06", index: "1", total: 7 },
{ dates: "2023-02-06", index: "2", total: 4 },
{ dates: "2023-02-06", index: "5", total: 3 },
{ dates: "2023-02-06", index: "6", total: 11 },
{ dates: "2023-02-07", index: "3", total: 123 },
{ dates: "2023-02-07", index: "4", total: 7 },
{ dates: "2023-02-07", index: "6", total: 99 },
{ dates: "2023-02-07", index: "7", total: 2 },
];
let keys = Array.from(new Set(req.map(i => i.index)));//得到唯一index的值
let dates = Array.from(new Set(req.map(i => i.dates)));//得到唯一dates的值
let res = keys.map(index => {
let data = dates.map(date => {
let item = req.find(i => i.dates == date && i.index == index);//找到index和dates一样的项
return item ? item.total : 0;//找不到发返回0,否则返回total属性
})
return { index, data };
})
console.log(res)
/*
let res=[
{ index: "1", data: [3, 6, 0, 0, 7, 0] },
{ index: "2", data: [0, 7, 2, 0, 4, 0] },
{ index: "3", data: [0, 3, 7, 0, 0, 123] },
{ index: "4", data: [0, 5, 1, 3, 0, 7] },
{ index: "5", data: [0, 0, 4, 2, 3, 0] },
{ index: "6", data: [0, 0, 0, 7, 11, 99] },
{ index: "7", data: [0, 0, 0, 1, 0, 2] },
];*/
用map集合来做,不存在就set,存在就先get,拼接后,再set.
let res = req.reduce((result, item) => {
let index = result.findIndex((data) => data.index === item.index);
if (index < 0) {
result.push({
index: item.index,
data: Array(6).fill(0),
});
index = result.length - 1;
}
let date = new Date(item.dates);
result[index].data[date.getDay()] = item.total;
return result;
}, []);
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!