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 }), {});
}
我不明白的是:
- 为什么我们需要使用
({ })
而不仅仅是{}
?我想这与对象串联有关,但想确定一下。
- 为什么我需要将密钥放在
[ ]
括号中?是因为起初我在对象上使用了展开运算符吗?是不是有点像写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 });
学了几个月的JS,一切都还好,但有时会遇到不懂或者想念的东西。 所以,我在做一些面向对象的练习,我的任务是将一些值转换成数字。 我不确定该怎么做,经过一番研究,我想到了这个功能:
function convertToNumber(obj) {
return Object.entries(obj).reduce((acc, [k, v]) => ({ ...acc, [k]: +v }), {});
}
我不明白的是:
- 为什么我们需要使用
({ })
而不仅仅是{}
?我想这与对象串联有关,但想确定一下。 - 为什么我需要将密钥放在
[ ]
括号中?是因为起初我在对象上使用了展开运算符吗?是不是有点像写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 });