2014-11-19 4 views
1

У меня есть функция, которая работает как есть, но мне нравится бросать вызов себе, записывая ее в одну строку, используя функции lodash. У меня возникли проблемы с работой этого конкретного примера.lodash compose with multiple arguments

function sum(x,y) { 
    return (+x)+(+y); 
} 

var a = function(e, f) { 
    return Math.pow((e-f),2); 
}; 

var x = _.reduce(arr, function(acc, v, k) { 
    var c = Math.pow((v-m), 2); 
    acc += c; 
    return acc; 
}, 0); 

var m = 5; 
var arr = [4, 2, 5, 8, 6] 

Я ожидаю 20.

Это то, что я пытался не повезло:

_.reduce(arr, _.partial(sum, _.partialRight(a, m)), 0); 

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

_.reduce(arr, _.compose(_.partialRight(a, m), sum), 0); 

дающий 131044.

Любые предложения?

ответ

0

Ваша оригинальная функция уже "одна строка, с помощью функции Lodash":

var x = _.reduce(arr, function(acc, v, k) { return acc + Math.pow(v-m, 2); }, 0);