let project = [1....100] // проекты
let runs = [1...2000] // задачи.
let data = [
{
title:'id project',
description:[]// все задачи которые относятся к этому проекту (у них будет такой же project_id как и у проекта)
},
{
title:'id project',
description:[]// все задачи которые относятся к этому проекту (у них будет такой же project_id как и у проекта)
},
{
title:'id project',
description:[]// все задачи которые относятся к этому проекту (у них будет такой же project_id как и у проекта)
},
]
const result = Object.values(runs.reduce(
(acc, n) => (acc[n.projectId]?.description.push(n), acc),
Object.fromEntries(projects.map(n => [ n.id, { ...n, description: [] } ]))
));
const result = projects.map(function(n) {
return {
...n,
description: this[n.id] ?? [],
};
}, runs.reduce((acc, n) => ((acc[n.projectId] = acc[n.projectId] ?? []).push(n), acc), {}));
const result = projects.map(n => ({
...n,
description: runs.filter(m => m.projectId === n.id),
}));
const projects = Array.from(
{ length: 10 },
(_, i) => ({title: `proj_${i}`, id: i})
);
const runs = Array.from(
{ length: 100 },
(_, i) => ({title: `task_${i}`, id: i, pid: randomInteger(0, 10)})
);
const data = projects.map(proj => ({
title: proj.title,
tasks: runs.filter(t => t.pid === proj.id)
}));
console.log(data);
// utils
function randomInteger(min, max) {
let rand = min + Math.random() * (max + 1 - min);
return Math.floor(rand);
}
Надо как то отсортировать эти 2 массива
const data = projects.reduce((acc, curr) => {
const copy = {...curr}
copy.description = runs.filter(r => r.projectId === curr.id)
acc.push(copy)
return acc
}, [])