Я изучаю JS уже несколько месяцев, и все идет хорошо, но иногда я сталкиваюсь с вещами, которых не понимаю, или пропустил. Итак, я выполнял некоторые объектно-ориентированные упражнения, и мое задание состояло в том, чтобы преобразовать некоторые значения в числа. Я не был уверен, как это сделать, и после некоторых исследований я придумал эту функцию:
function convertToNumber(obj) {
return Object.entries(obj).reduce((acc, [k, v]) => ({ ...acc, [k]: +v }), {});
}
Вещи, которые я не понимаю:
({ })
и не только{}
? Я предполагаю, что это как-то связано с конкатенацией объектов, но хотелось бы быть уверенным.[ ]
? Это потому, что сначала я использовал оператор распространения на объекте? Это как писать acc[k]
в каком-то смысле?заранее спасибо
- Зачем нам нужно использовать ({ })
и не только {}
? Я предполагаю, что это как-то связано с конкатенацией объектов, но хотелось бы быть уверенным.
Это используется для прямого возврата объекта в стрелочной функции, чтобы отличить его от круглых скобок, используемых для переноса тела функции. Два одинаковых:
(acc, [k, v]) => ({ ...acc, [k]: +v })
(acc, [k, v]) => { return { ...acc, [k]: +v }; }
- Почему ключ нужно заключать в скобки [ ]
? Это потому, что сначала я использовал оператор распространения на объекте? Это как писать acc[k]
в каком-то смысле?
Скобки в основном используются для установки ключа в качестве динамического значения k
. Вот простой пример:
const x = 'id';
console.info({ x: 1 });
console.info({ [x]: 1 });