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
  • 157
  • 1
  • 2
  • 9

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
  • 351,820
  • 24
  • 303
  • 358
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
  • 35,187
  • 4
  • 31
  • 54
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
  • 67,185
  • 15
  • 124
  • 181
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
  • 84,957
  • 6
  • 91
  • 136