2

我被要求定义一个函数reduce,它具有三个参数,一个数组,一个未知函数和一个数字,并将数组减少为一个数字

这是在我被要求定义函数之前给我的

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

    return total + number;

}, 0); // should return 6

我对这要求我做什么完全诚实有点一无所知

如果我至少能得到一些指导,我将不胜感激

这是我的尝试

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

    function func(){
}

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

        func(initial, array[i]);
    }
}
4

2 回答 2

1

尝试:

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

简单的。

于 2013-11-14T05:31:57.140 回答
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]);
    }
};
于 2013-11-14T05:28:50.220 回答