返回具有 JavaScript Reduce 的对象

Returning Objects with JavaScript Reduce

在 FreeCodeCamp 上,有人向我介绍了这段代码:

const users = [
  { name: 'John', age: 34 },
  { name: 'Amy', age: 20 },
  { name: 'camperCat', age: 10 }
];

const usersObj = users.reduce((obj, user) => {
  obj[user.name] = user.age;
  return obj;
}, {});
console.log(usersObj);

// expected result : { John: 34, Amy: 20, camperCat: 10 }

我已经研究了一段时间了,只是无法理解这里的 reduce 函数是如何工作的。在我看来,它在第一次迭代中的工作方式如下:

**ITERATION 1:**
Initial Accumulator (obj): {}
CurrVal (user): {name: 'John', age: 34}
Updated Accumulator: {}[{name: 'John', age: 34}.name] = {name: 'John', age: 34}.age;

但是当我一步步尝试这个时,我的控制台马上就出错了,据我所知,更新的累加器基本上是在说["John"] = 34为什么我们要将名字设置为年龄?

我在这里缺少什么来连接缺失的部分?为什么上面的代码有效?

本质上,您描述的流程正在发生的事情,但它不是有效的 JS,它的编写方式。

如果我将代码稍微调整成有效的 JS,这就是你得到的:

//**ITERATION 1:**
let accumulator = {};
console.log('Accumulator:\n', accumulator);

let currVal = {name: 'John', age: 34};
console.log('Current value:\n', currVal);

accumulator[currVal.name] = currVal.age;
console.log('Updated accumulator:\n', accumulator)