我有一个数组人,其中包含许多看起来像这样的对象:
const person = [
{ first: 'firstName', last: 'lastName', year: 1439, passed: 1495 },
...
]
我已经计算出该人的寿命:
const oldest = person.map(x => x.passed - x.year);
每个人的岁月都有新的数组。
现在,我想将此计算的年份作为新的属性年龄推入此数组中的每个人对象。
你能帮我吗?
答案 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)
由于两个数组person
和oldest
具有相同的长度,因此您可以遍历两个数组,从两个数组的相同索引处的元素中构造具有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}));