В следующем коде показаны три варианта использования JavaScript .reduce()
:
- сложить сумму
- построить массив
- создать объект JavaScript
Как понять добавленные круглые скобки вокруг фигурных скобок в третьем примере? Являются ли они просто для того, чтобы фигурные скобки объекта не интерпретировались как фигурные скобки функции? Или у них другая цель?
Есть ли другой способ написать третий пример, чтобы этот синтаксис был более явным, например. можно ли как-то создать объект JavaScript внутри многострочной функции?
const languages = ['french', 'french', 'spanish', 'polish', 'spanish', 'german', 'spanish', 'polish', 'spanish', 'spanish', 'french', 'spanish', 'english', 'french', 'spanish', 'english', 'french', 'english'];
// 1. iterating while adding a sum
const sum = languages.reduce((acc, language) => {
acc++;
return acc;
}, 0);
console.log(`There are ${sum} entries.`);
// 2. iterating while building an array
const initials = languages.reduce((acc, language) => {
acc.push(language.substring(0, 1));
return acc;
}, []);
console.log(initials);
// 3. iterating while building a JavaScript object
const totals = languages.reduce((acc, language) => ({
...acc,
[language]: acc[language] ? acc[language] + 1 : 1
}), {});
console.log(totals);