javascript-将新属性推入数组中的对象

时间:2018-12-25 14:41:40

标签: javascript arrays object

我有一个数组人,其中包含许多看起来像这样的对象:

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

我已经计算出该人的寿命:

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

每个人的岁月都有新的数组。

现在,我想将此计算的年份作为新的属性年龄推入此数组中的每个人对象。

你能帮我吗?

4 个答案:

答案 0 :(得分:8)

您可以添加新属性

person.forEach(p => p.lifetime = p.passed - p.year);

或映射新的对象数组

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

答案 1 :(得分:0)

您可以这样分配属性,直接设置属性

人[0] .age =最老的[0]:

您可以像这样循环。

答案 2 :(得分: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)

答案 3 :(得分:0)

由于两个数组personoldest具有相同的长度,因此您可以遍历两个数组,从两个数组的相同索引处的元素中构造具有age属性的新对象,将它们推送到结果数组。

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}));