Связывание функций карри с lodash

Вдохновленный этой статьей о функциях карри, я пытался их связать и придумал это решение. Я не уверен насчет миксина, хотя, так или иначе, я чувствую, что у lodash такая функция уже есть. Если так, то как называется эта функция?

var _ = require('lodash');

var get = _.curry(function(property, object) {return object[property]});

var map = _.curry(function(fn, objects){ return objects.map(fn) });

var json = {
    "user": "hughfdjackson",
    "posts": [
        { "title": "why curry?", "contents": "..." },
        { "title": "prototypes: the short(est possible) story", "contents": "..." }
    ]
}

_.mixin({
    then:function(input, fn) {return fn(input);}
});

_(json)
    .then(get('posts'))
    .then(map(get('title')))
    .tap(console.log)

1 ответ

Решение

В статье Хью Джексона (отлично!) then функции, вероятно, будут поступать из библиотеки Promise, вероятно, связанной с вызовом AJAX. Так что вам не нужно было бы делать это самостоятельно, если бы вы начинали там. Смешивая это в _ как это кажется странным.

Lo-Dash и Underscore позволят вам сделать это со своими curry функции. Некоторые новые библиотеки, такие как Ramda и FKit, делают это автоматически. Их версии get а также map уже карри, и предназначены для использования таким образом. (Раскрытие: я один из авторов Рамды)

Другие вопросы по тегам