const groups = [ { name: "1", subjects: [1, 2] }, { name: "2", subjects: [1] }, ] const subjects = [ { id: 1, name: "English", }, { id: 2, name: "Mathematics", }, { id: 3, name: "Physics", }, ] example:[ { name: "1", subjects: [ { id: 1, name: "English", }, { id: 2, name: "Mathematics", }, ] const groupsSubject = groups.map(group => { return { ...group, subjects: subjects.id } })Puede crear una búsqueda de objetos de sujetos basada en la identificación. Luego itere a través de su grupo y asigne los temas respectivos.
const groups = [ { name: "1", subjects: [1, 2] }, { name: "2", subjects: [1] }], subjects = [ { id: 1, name: "English", }, { id: 2, name: "Mathematics", }, { id: 3, name: "Physics", }, ], lookup = Object.fromEntries(subjects.map(o => [o.id, o])), result = groups.map(({name, subjects}) => ({name, subjects: subjects.map(id => ({...lookup[id]}))})); console.log(result); .as-console-wrapper { min-height: 100%!important; top: 0; }Esta es mi respuesta:
const groups = [ { name: '1', subjects: [ 1, 2 ] }, { name: '2', subjects: [ 1 ] } ] const subjects = [ { id: 1, name: 'English' }, { id: 2, name: 'Mathematics' }, { id: 3, name: 'Physics' } ] const group = (groups, subjects) => { return groups.map((group) => ({ name: group.name, subjects: subjects.filter((subject) => group.subjects.includes(subject.id)) })) } console.log(group(groups, subjects))Producción:
[ { name: '1', subjects: [ [Object], [Object] ] }, { name: '2', subjects: [ [Object] ] } ]Map y Array#map , cree un mapa donde la identificación del sujeto es la key y el sujeto es el valueArray#map , itere sobre la matriz de grupos. En cada iteración, la lista de sujetos se creará utilizando Array#map y Map#get para transformar los identificadores en objetos. const _getGroupWithSubjectDetails = (groups = [], subjects = []) => { const subjectMap = new Map( subjects.map(subject => ([subject.id, subject])) ); return groups.map(({ subjects = [], ...group }) => ({ ...group, subjects: subjects.map(subjectId => ({ ...(subjectMap.get(subjectId) || {}) })) })); } const groups = [ { name: "1", subjects: [1, 2] }, { name: "2", subjects: [1] } ], subjects = [ { id: 1, name: "English" }, { id: 2, name: "Mathematics" }, { id: 3, name: "Physics" } ]; console.log( _getGroupWithSubjectDetails(groups, subjects) );