нужно получить сумму всех свойств обьектов 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)
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);
Если вы в стрелочной функции используете блок {...}
то вы должны вернуть из него значение оператором 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);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
я бы хотел бы попросить помощьЯ нажимаю на Action и Completed меняеться на Done