如何解决使用 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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。