问题
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" )
回答1:
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)
回答2:
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; }
回答3:
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);
回答4:
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)
来源:https://stackoverflow.com/questions/55500556/js-add-a-new-property-and-value-on-one-of-the-objects