Не понятно зачем нужна обертка ‘Lodash’ над данными, что удалось найти это вместо функции ‘compose’ Ramds.js так ?
Вот пример: http://prntscr.com/kdvsj7
Или зайти на открыть консоль вставить вот этот код:
const data = [{id: 1, name: ‘Alex’}, {id: 2, name: ‘John’}]
console.log('pure data ', data)
console.log('Lodash wrapper ', _(data))
Спасибо!
Чтобы можно было chain-ить вызовы методов. Плюс wrapper - ленивый. Т.е. результат всех преобразований, которые применены к wrapper-у будет вычислен только в момент обращения к значению.
https://jsfiddle.net/s4c2mxek/4/
Обрати внимание что console.log
-и появляются только после клика по кнопке
UPD
Обновил пример https://jsfiddle.net/s4c2mxek/6/ чтобы вызов value()
был явен
Спасибо, не совсем понятно, как происходит работа ‘chain’:
var youngest = _.chain(users)
.map(function(chr) {
console.log('evaluated when .value is called')
return chr.user + ' is ' + chr.age;
})
youngest.first()
//=> так не работает, возвращает обертку, работает записать перенести внутрь функции и вызвать эту функцию или вызвать в конце цепочки вызовов value()
Спасибо.
Вот это тебе нужно. В примере что я кинул неявно вызывается valueOf
, который наверняка реализован так же как и value()
, когда я конкатенировал строку с результатом .first()
.
Обновил пример https://jsfiddle.net/s4c2mxek/6/ чтобы вызов value()
был явен
Спасибо, а есть примеры например с Ramda.js или Immutable.js с ленивыми вычислениями?
У меня нет. Этот пример я взял из документации лоудаша. Запили отдельный пост с таким вопросом - может у кого будет ответ.