С помощью этого кода:Странно LoDash поведение
var objects = [{'a': 1}, {'b': 2}];
var result1, result2;
result1 = _(objects)
.filter(_.partialRight(_.has, 'a'))
.value();
result2 = _(objects)
.filter(function(o){ return _.partialRight(_.has, 'a')(o);})
.value();
result1
будет пустой массив и result2
будет [{'a': 1}]
. Почему?
пс
Plunker:
http://plnkr.co/edit/6nhLBtq2id0GSYXVjhcX?p=preview
Почему, по вашему мнению, это проблема с 'partialRight'? Он прикрепляет 'a' к * концу * массива сложенных аргументов, то есть после' o, i, xs'. Это означает, что '_.has' получает' i' в качестве второго аргумента. – DCoder
@DCoder: '_.partialRight (_. Has, 'a')' должен возвращать функцию, ожидающую одного аргумента. Кажется, это может занять более одного. Правильно? – elclanrs
"должен возвращать функцию, ожидающую одного аргумента" - должно ли это? Он возвращает функцию, которая принимает любое количество аргументов, которые добавляются частично. Фактический вызов выглядит так: '_.has (o, i, xs, 'a')'. По сравнению с '_.has (o, 'a')' (поэтому на самом деле вызовы возвращают разные результаты) – zerkms