Comments 26
Когда столкнулся со стрелочной функцией в чужом коде, довольно долго втыкал, что это такое… Хоть концепция лямбд мне и была знакома, но в JS она как — то слишком лаконична мне показалась…
IE разных версий и в некоторых версиях ещё не поддерживается…
Используйте babel + browserify, и ваш код будет чистым, современным, поддерживаемым. А если вдруг в вашей компании случится автобусный инцидент, вы будете востребованы на рынке.
Постоянно переписывать for на map и обратно — задалбывает.
А такие простые случаи, что указаны в посте, редко встречаются.
PS: к нижнему комментарию: если всё изначально указывать, то размер кода не сильно меньше, чем у for. Зато ещё эта скобка после }…
PPS: и постоянно чередовать стиль то for, то map — тоже как-то не очень.
И индекс иногда то нужен, то нет.
В callbackFn мапа вообще-то есть индекс.
то убирать команды внутри callback-функции
В чём проблема? Если неудобно со стрелочной функцией — передайте туда обычную.
Вы можете передать индекс в колбэк как второй параметр. В случае reduce
— как третий.
Чтоб два раза не вставать: ещё в колбэк можно передать исходный массив.
Алло, указанные в статье функции поддерживаются начиная с IE9. О какой поддержке вообще идет речь?
В примере с
donations
как раз такой случай и показан.он как раз обязателен
Да сфигали? Ничего там не обязательно вообще.
[1,2,3].reduce(() => { console.log(`woo!`); })
Если привыкнуть, то выглядит очень удобно. Коротко и элегантно, но для меня все эти JS фишки никогда не будут удобочитаемыми.
Ключевое for сразу подразумевает о перечислении, независимо от языка и примерный смысл можно понять даже если с языком не работал, а в специфические сокращения у JS иногда приходится долго втыкать, если до этого плотно сидел на каком-нибудь python
в специфические сокращения у JS иногда приходится долго втыкать, если до этого плотно сидел на каком-нибудь python
Наоборот — тоже.
подобное можно сказать только о яваскриптовом [].forEach(). тут соглашусь — действительно выглядит как костыль
const donations = [5, 20, 100, 80, 75];
let total = donations.reduce((total,donation) => {
return total + donation;
});
const donations = [5, 20, 100, 80, 75];
let total = donations.reduce((total,donation) => {
return total + donation;
}, 450);
Я бы вкинул вам свои 5 копеек :-), функция reduce в вашем случае дважды делает операцию сложения можно было на втором примере сказать что функция сложения может быть сохранена в переменную с идентификатором add и потом многократно использована в разных инструкциях где нужно сложение.
const donations = [5, 20, 100, 80, 75];
const add = (a,b) => a+ b;
let total = donations.reduce(add, 450);
Не увидел и еще одного из важнейших профитов от map, reduce, filter, sort — chain
// массив возрастов
// цель взять совершеннолетних и получить общий возраст :-)
const isAdult = age => age > 18;
const add = (a, b) => a + b;
[15, 20, 60, 80, 95, 50, 45, 35].filter(isAdult).reduce(add, 0); // => 385
Та же я не услышал что все эти функции никак не изменяют изначальный массив и возвращают новый экземпляр массива.
Начало работы с методами JavaScript-массивов .map(), .filter() и .reduce()