在javascript中定义包含未知函数的函数

时间:2013-11-14 05:18:27

标签: javascript

我被要求定义一个函数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]);
    }
}

2 个答案:

答案 0 :(得分:1)

尝试:

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

简单。

答案 1 :(得分: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]);
    }
};