我试图使用JavaScript reduce函数获取一个对象作为输出。 如果我定义一个对象{ageTotal:0}
作为第二个参数,它就可以工作了。 如何仅使用空对象{}
在不定义第二个参数属性的情况下实现此年龄总和。
const users = [
{ name: 'Tyler', age: 28},
{ name: 'Mikenzi', age: 26},
{ name: 'Blaine', age: 30 }
];
// output as a *int*
const sumAge = users.reduce((totals, current) => {
return totals + current.age;
}, 0);
console.log(sumAge);
// output as *object*
function getUserData (users) {
return users.reduce((data, user) => {
data.ageTotal += user.age
return data;
}, { ageTotal: 0 });
}
console.log(getUserData(users));
可以在递增时使用短路计算,将当前年龄值添加到累加器属性AgeTotal
(如果存在,或将其设置为0,否则):
data.ageTotal = (data.ageTotal || 0) + user.age
下面是一个快速演示:
null
const users = [
{ name: 'Tyler', age: 28},
{ name: 'Mikenzi', age: 26},
{ name: 'Blaine', age: 30 }
];
// output as *object*
function getUserData (users) {
return users.reduce((data, user) => {
data.ageTotal = (data.ageTotal || 0) + user.age
return data;
}, {});
}
console.log(getUserData(users));