JavaScript - 将新属性添加到数组中的对象

7

我有一个包含许多类似于此的对象的人数组:

const person = [
{ first: 'firstName', last: 'lastName', year: 1439, passed: 1495 },
 ...
]

我已经计算出这个人活了多少年:

const oldest = person.map(x => x.passed - x.year);

我得到了一个包含每个人出生年份的新数组。

现在我想把这个计算后的年龄作为一个新属性添加到该数组中每个人的对象中。

你能帮我吗?

4个回答

11
你可以添加一个新属性。
person.forEach(p => p.lifetime = p.passed - p.year);

或者映射一个新对象数组

persons = person.map(p => ({ ...p, lifetime: p.passed - p.year });

0

您可以通过直接赋值来设置属性,例如:

Person[0].age = oldest[0]:

您可以像这样循环。


0
您可以使用array.forEach,它将遍历相同的数组,并且您可以为相同的数组创建新属性。
如果您想获取一个新数组,则可以使用array.map,它将创建一个新数组。
我希望这可以解决问题。

const person = [
{ first: 'firstName', last: 'lastName', year: 1439, passed: 1489 },
{ first: 'secondName', last: 'lastName', year: 1499, passed: 1590 },

{ first: 'thirdName', last: 'lastName', year: 1539, passed: 1570 },

{ first: 'fourthName', last: 'lastName', year: 1993, passed: 2018 },

]


person.forEach(obj => obj["age"] = obj.passed - obj.year)


console.log("same array with added age property", person)


0

由于数组 personoldest 长度相同,您可以遍历任意一个数组,在相同的索引处从两个数组的元素构造新对象,并将它们推入结果数组。

const person = [
  { first: 'firstName', last: 'lastName', year: 1439, passed: 1495 }
];

const oldest = person.map(x => x.passed - x.year);

const result = [];
person.forEach(({first, last, year, passed}, i) => result.push({first, last, year, passed, age: oldest[i]}));

console.log(result);

假设有一个 zip 函数(不幸的是,它还不是标准的 JavaScript),你也可以将其缩短为:

zip(person, oldest).map(([{first last, year, passed}, age]) => ({first, last, year, passed, age}));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接