разделите итерацию массива и выполняемую операцию.
Напишите функцию, складывающую массив с любой заданной функцией
у меня ступор и не понимание условия и выполнения. Подскажите знающие люди
function fold(array, operation) {
// your code goes here
}
|function add(a, b) { return a + b }
|function mul(a, b) { return a * b }
|fold([1, 2, 3, 4], add) // add(add(add(1, 2), 3), 4) === 10
|fold([1, 2, 3, 4], mul) // 24
function add(a, b) { return a + b }
function mul(a, b) { return a * b }
И нужно написать такую fold, которая принимает массив и функцию вторым аргументом и вызывает эту функцию для первой пары значений, это результат1, потом берет результат1 и третье значение из массива вызывает функцию с ними, получает результат2 итд до конца массива. Это попытались записать в add(add(add(1, 2), 3), 4). Тебе нужно реализовать такие шаги, результат которых был бы как будто результат этих вызовов.
Пробовать обязательно потому что обучение как раз про то чтобы делать такое чего не знал как делать. И оно не будет получаться сначала. А потом со временем будет проще и проще.
Секрет в том чтобы разбивать задачу на такие шаги, которые ты можешь/знаешь как запрограммировать.
Например решение влоб:
Попробуй для начала вывести через console.log первые два элемента массива, а потом по одному элементу до конца массива
Замени console.log на вызов функции с запоминанем результата вызова. Там где логгируешь по одному элементу, вызывай функцию с элементом и результатом вызова + снова запоминай результат.
Чтобы легче понять “что от меня требуется” можно примеры решить самому и понять, какие операции должны быть выполнены для получения результата, “какие я проделал шаги, такие же должна выполнить программа”.
получаем аргументом массив и функцию. Из массив циклом вытягиваем нулевое значение и вызываем функцию- результата пишем в переменную и так пока не будет строго равно 10. по аналогии подставляем другую функцию и перемножаем
Все что делается с помощью рекурсии можно сделать с помощью цикла. Если нужно научиться программировать, то нужно научиться разбивать задачу на программируемые подзадачи. А как именно их реализовывать - с помощью рекурсии или цикла - это уже вопрос доступного набора инструментов.
ну вот что то нацарапал, дольше пока не совсем понимаю как правильно записать
function fold(array, operation) {
var sum = 0;
for (var i = 1; i < array.length; i++) {
sum+=array[i];
}
add(sum, array[i]);
return result
}
function add(a, b) {
return a + b
}
function mul(a, b) {
return a * b
}
fold([1, 2, 3, 4], add) // add(add(add(1, 2), 3), 4) === 10