提问者:小点点

对象属性的总和,作为数组中的对象


我试图使用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));

共1个答案

匿名用户

可以在递增时使用短路计算,将当前年龄值添加到累加器属性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));