const source = [
{
id: "1",
data: {
first_name: "Rian",
last_name: "Nugraha"
},
school: {
id: "1",
data: "PLMK-JKT"
},
},
{
id: "2",
full_name: "Ari Santoso",
school: {
id: "1",
short_name: "GRSR",
data: "JKT"
},
},
{
id: "3",
data: {
first_name: "Rahman",
last_name: "Sunggara"
},
school: {
id: "1",
short_name: "GELM",
data: "JKT"
},
},
{
id: "4",
data: {
first_name: "Rian",
last_name: "Nugraha"
},
school: {
id: "2",
data: "PLMK-BDG"
},
},
]
so, I want to combine first_name and last_name into fullname of the nested array or combine short_name and data in school nested array but always undefined, the result like below:
{ name : ‘Rian Nugraha’, school_name: ‘PLMK-JKT }
>Solution :
Did using a ternary operator
const source = [
{
id: "1",
data: {
first_name: "Rian",
last_name: "Nugraha"
},
school: {
id: "1",
data: "PLMK-JKT"
},
},
{
id: "2",
full_name: "Ari Santoso",
school: {
id: "1",
short_name: "GRSR",
data: "JKT"
},
},
{
id: "3",
data: {
first_name: "Rahman",
last_name: "Sunggara"
},
school: {
id: "1",
short_name: "GELM",
data: "JKT"
},
},
{
id: "4",
data: {
first_name: "Rian",
last_name: "Nugraha"
},
school: {
id: "2",
data: "PLMK-BDG"
},
},
]
const resArray = source.map((el) => {
let name = el.data? (el.data.first_name+" "+el.data.last_name): el.full_name;
let school_name = el.school.short_name? (el.school.short_name+" "+el.school.data): el.school.data;
const result = {
name: name,
school_name: school_name
}
return result;
})
console.log(resArray)