0

so this is my array:

0: {universityYear: 'Anul universitar 2022-2023', name: 'Pimpulsul'}
1: {universityYear: 'Anul universitar 2021-2022', name: 'Evrikaul'}
2: {universityYear: 'Anul universitar 2021-2022', name: 'Po'}

and I want to obtain:

0: {universityYear: 'Anul universitar 2022-2023', name: ['Pimpulsul'] }
1: {universityYear: 'Anul universitar 2021-2022', name: ['Evrikaul', 'Po'] }
  • Does this answer your question? [Merge JavaScript objects in array with same key](https://stackoverflow.com/questions/33850412/merge-javascript-objects-in-array-with-same-key) – Ak Baig May 21 '22 at 11:57

1 Answers1

2

You can use the reduce:

let arr = [
    {universityYear: 'Anul universitar 2022-2023', name: 'Pimpulsul'},
    {universityYear: 'Anul universitar 2021-2022', name: 'Evrikaul'},
    {universityYear: 'Anul universitar 2021-2022', name: 'Po'}
];

let newArr = arr.reduce((out, cv, ci, re) => {
    let targetIndex = out.findIndex(item => item.universityYear == cv.universityYear);
    if(targetIndex > -1)
      out[targetIndex].name.push(cv.name);
    else
      out.push({...cv, name: [cv.name]})

    return out;
}, []);

console.log(newArr)
Bahador Raghibizadeh
  • 1,155
  • 11
  • 23