I have two Arrays of Objects, that share an ID. How do I merge them into a single Array, where all items have been merged based on the ID?
I’m using TypeScript and Angular.
const array0 = [
{
subject_id: "711",
topics: [ "Test", "Test2" ]
},
{
subject_id: "712",
topics: [ "topic1", "Topic2" ]
}
];
const array1 = [
{
subject_id: 711,
subject_name: "Science"
},
{
subject_id: 712,
subject_name: "Maths"
}
];
I want the merged result to be:
const result = [
{
subject_id: "711",
subjectName: "Science",
topics: [ "Test", "Test2" ]
},
{
subject_id: "712",
subjectName: "Maths",
topics: [ "topic1", "Topic2" ]
}
];
Advertisement
Answer
I think you could use something like this:
selectedSubjects = [
{ subject_id: 711, topics: ["Test", "Test2"] },
{ subject_id: 712, topics: ["topic1", "Topic2"] }
]
theOtherSubjects = [
{subject_id: 711, subject_name: "Science"},
{subject_id: 712, subject_name: "Maths"}
] // fixed the ids as I supposed the should be the same, otherwise it makes no sense with the provided data
let mergedSubjects = selectedSubjects.map(subject => {
let otherSubject = theOtherSubjecs.find(element => element.subject_id === subject.subject_id)
return { ...subject, ...otherSubject }
})