JavaScript - 使用 reduce 方法创建的对象和 ({}) 含义

JavaScript - Object creating with reduce method and ({}) meaning

学了几个月的JS,一切都还好,但有时会遇到不懂或者想念的东西。 所以,我在做一些面向对象的练习,我的任务是将一些值转换成数字。 我不确定该怎么做,经过一番研究,我想到了这个功能:

function convertToNumber(obj) {
  return Object.entries(obj).reduce((acc, [k, v]) => ({ ...acc, [k]: +v }), {});
}

我不明白的是:

  1. 为什么我们需要使用({ })而不仅仅是{}?我想这与对象串联有关,但想确定一下。
  2. 为什么我需要将密钥放在[ ] 括号中?是因为起初我在对象上使用了展开运算符吗?是不是有点像写acc[k]

提前致谢

- 为什么我们需要使用 ({ }) 而不仅仅是 {}?我想这与对象连接有关,但我想确定一下。

这个用来在箭头函数中直接return一个对象,以区别于用来包裹函数体的圆括号。两者相同:

(acc, [k, v]) => ({ ...acc, [k]: +v })
(acc, [k, v]) => { return { ...acc, [k]: +v }; }

- 为什么我需要将密钥放在 [ ] 括号中?是因为一开始我在对象上使用了展开运算符吗?是不是有点像写acc[k]

中括号主要用来设置key为k的动态值。这是一个简单的例子:

const x = 'id';
console.log({ x: 1 });
console.log({ [x]: 1 });