0

I have a list of objects

const array = [
    {club: "Club A", number: 12},
    {club: "Club B", number: 12}
]

I want to add a new property in one of the objects

member: ["a", "b"]

It would be

const newArray = [
    {club: "Club A", number: 12, member: ["a", "b"]},
    {club: "Club B", number: 12}
]

Tried with map

const newArray = array.map(obj => check if obj.club ==="Club A" )
susu watari
  • 177
  • 1
  • 2
  • 11

4 Answers4

0

You could just assign the new property.

With a classic assignment:

const
    array = [{ club: "Club A", number: 12 }, { club: "Club B", number: 12 }],
    member = ["a", "b"];
    
array.find(({ club }) => club === "Club A").member = member;

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Or take Object.assign

const
    array = [{ club: "Club A", number: 12 }, { club: "Club B", number: 12 }],
    member = ["a", "b"];
    
Object.assign(array.find(({ club }) => club === "Club A"), { member });

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392
0

You can use map and object destrcturing

const array = [{club: "Club A", number: 12},{club: "Club B", number: 12}]
let member = ["a", "b"]

const newArray = array.map(obj => obj.club === "Club A" ? {...obj,member} : obj)

console.log(newArray)
Code Maniac
  • 37,143
  • 5
  • 39
  • 60
0

You could use Object.assign in map

const array = [
    {club: "Club A", number: 12},
    {club: "Club B", number: 12}
]

const member = {member: ["a", "b"]};

const newArray = array.map(obj => obj.club === 'Club A' ? Object.assign(obj, member) : obj);
console.log(newArray);
baao
  • 71,625
  • 17
  • 143
  • 203
0

You can use find() to get the item you want to edit. Then just assign the property to it:

const array = [
    {club: "Club A", number: 12},
    {club: "Club B", number: 12}
]

// find the correct item
let item = array.find(item => item.club == "Club A")
item.member =  ["a", "b"]

console.log(array)
Mark
  • 90,562
  • 7
  • 108
  • 148