var currency ='$';
For(var i = 0; i < books.length; i++){
price = price + books[I].price + currency;
}
console.log(price);
books.reduce((total, book) => {
return total + book.price
}, '')
Спасибо, я уж было надежду потерял совсем...
Только можно было ещё обойтись без скобок и ретурна, а вторым аргументом было бы неплохо инициализировать аккумулятор, ибо иначе вместо него встанет первый элемент массива, а сам цикл начнётся со второго, а так пойдёт с первого:
books.reduce((total, book) => total + book.price, 0) + currency // '123$'
map reduce хватает за глаза, я себе плохо представляю ситуацию где фронту требуется сделать перебор 500 000 элементов.
для супер сложный вычеслений есть wasm уже
const data = new Array(300000).fill(null).map((item)=>({data:Math.random()}));
меньше секунды будет
щас затестил интересное поведение:
const curr = "$";
let price = "";
let books = [{price: "3"}, {price: "5"}, {price: "33"}]
price += books.map(book => (book.price + curr))
price будет равен "3$,5$,33$" именно с запятыми )
в данном примере map гораздо лаконичнее выглядит, а еще forEach очень-очень медленный и его не рекомендуют использовать.
https://coderwall.com/p/kvzbpa/don-t-use-array-foreach-use-f...
В примере же, мы просто используем каждый элемент массива в общей операции - юзаем forEach, чтобы было более выразительно и понятно.
Но конечно, best choice - reduce.
books.reduce((a,b) => a + b.price + currency)
return не нужен, так как результат map нигде не используется (map можно заменить на forEach).
у вас ошибка в 3 строке - for пишется с маленькой буквы.
И что ж вы на es2015+ не пишите?)
А еще есть прекрасное += вместо a = a + b можно легко написать a += b