2013-11-14 4 views
2

меня попросили определить функцию уменьшения, которая имеет три параметра, массив неизвестной функции, а также ряд, и уменьшает массив в числоОпределить функцию, которая содержит неизвестную функцию в JavaScript

и это был я получил, прежде чем я попросил определить функцию

reduce([1, 2, 3], function(total, number) { 

    return total + number; 

}, 0); // should return 6 

Я немного невежествен о том, что это прошу меня сделать, чтобы быть полностью честным

, если я мог бы по крайней мере, получить руководство id быть благодарен

вот моя попытка

var reduce = function(array, func, initial){ 

    function func(){ 
} 

    for(var i = 0; i < array.length; i++){ 

     func(initial, array[i]); 
    } 
} 
+0

Пожалуйста, отформатируйте код немного лучше :) –

+3

звучит так, будто вас просят создать ['Array.prototype.reduce'] (https://developer.mozilla.org/en-US/docs/Web/ JavaScript/Reference/Global_Objects/Array/Reduce) как статический метод. – zzzzBov

ответ

0

Вы должны быть уверены, чтобы создать общую переменную, которая будет переопределен после каждого вызова функции. Вы были очень близки. Попробуйте это:

var reduce = function(array, func, initial){ 
    var total = initial, 
     arr_len = array.length; 
    for(var i = 0; i < arr_len; i++){ 
     total = func(total, array[i]); 
    } 
}; 
+0

га, я думаю, это то, к чему стремился этот вопрос. я думаю, я не понимал, как сформулировать неизвестную функцию, которая будет вызываться каждый раз. в приведенном выше примерном выражении, является полным + числом, представляющим функцию параметра? –

+0

Да. Функция принимает текущее состояние, 'total' и изменения, которые указываются с текущим аргументом массива (' number' выше). Функция, которую вы использовали, просто увеличивает «total». – Alphadelta14

1

Try:

function reduce(list, f, acc) { 
    return list.length ? 
     reduce(list.slice(1), f, f(acc, list[0])) : 
     acc; 
} 

Simple.

Смежные вопросы