Q: Возможно ли задать initialValue метода reduce в стрелочных функциях? нужно получить сумму всех свойств обьектов amount находящийся в массиве orders.
Я сделал это с помощью  анонимный функции но никак не смог релизовать с помощью стрелочных функций.


const orders = [
  {amount:250},
  {amount:80},
  {amount:3},
  {amount:40}
];


let result = orders.reduce(function(current,order){
  return current + order.amount;
}, 0)
alert(result);



ВОПРОС:Как задать initialValue в стрелочных функциях?

Мои попытки
let attempt = orders.reduce((index,current) => {index + current.amount}, 0)


A: initialValue - это обычный параметр.
Здесь больше важна особенность того, как разбирается стрелочная функция.
при указании (index,current) => index + current.amount данная функция эквивалентна следующей
function (index,current)  { return index + current.amount}

В то же время при явном указании блока: (index,current) => {index + current.amount}
function (index,current)  { index + current.amount }

Отсюда видно, что функция ничего не возвращает.
Для решения нужно либо добавить return: (index,current) => { return index + current.amount}
Либо обернуть тело функции в круглые скобки, что позволит парсеру отделить тело функции от следующего параметра:
(index,current) => (index + current.amount)

примеры:


const orders = [{
    amount: 250
  },
  {
    amount: 80
  },
  {
    amount: 3
  },
  {
    amount: 40
  }
];


let result = orders.reduce(function(current, order) {
  return current + order.amount;
}, 0)
console.log(result);

result = orders.reduce((current, order) => {
  return current + order.amount;
}, 0)
console.log(result);

result = orders.reduce((current, order) => (current + order.amount), 0)
console.log(result);



A: Если вы в стрелочной функции используете блок {...} то вы должны вернуть из него значение оператором return. Если же в стрелочной функции ровно один оператор и он же является результатом функции, то ни блока {...}, ни оператора return не нужно


const orders = [
  {amount:250},
  {amount:80},
  {amount:3},
  {amount:40}
];

let result = orders.reduce((current, order) => current + order.amount, 0);
console.log(result);

result = orders.reduce((current, order) => {
  return current + order.amount;
}, 0);
console.log(result);


