Lodash v4.17.2
有人可以澄清链接是如何工作的吗?我刚刚找不到任何解释lodash方法返回结果的文档或博客。 在下面的代码示例中,为什么filterAge的第二个赋值不起作用?还是类似更像链接的jquery?如果有人有资源解释这一点,我很乐意。
let characters = [
{ 'name': 'barney1', 'age': 36, 'pets': ['hoppy'] },
{ 'name': 'barney2', 'age': 36, 'pets': ['hoppy'] },
{ 'name': 'barney3', 'age': 36, 'pets': ['hoppy'] },
{ 'name': 'barney4', 'age': 36, 'pets': ['hoppy'] },
{ 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] }
];
let filterAge = _.take(_.slice(_.filter(characters, { 'age': 36 }), 2), 5);
filterAge = _.filter(characters, { 'age': 36 })
.slice(2)
.take(5);
console.log(JSON.stringify(filterAge));
<script src="https://cdn.jsdelivr.net/lodash/4.17.2/lodash.min.js"></script>
答案 0 :(得分:3)
您可以在_(value)
的描述和库的其他“Seq”函数/方法中找到关于链接或序列的文档。
要使用lodash链接,您需要使用_(value)
或_.chain(value)
来创建序列,并在结尾处使用.value()
来检索结果。
在这些之间,每个lodash的其他功能将作为序列的方法提供,有两个不同之处:
方法返回一个修改后的序列对象,该对象保存当前值而不是值本身,但.value()
方法除外。
第一个参数已被删除。每个方法都从序列对象之前获取值,而不是从参数中获取值。并且,传递给函数的其他参数会向方法的左侧移动一个位置。
对于你的例子:
filterAge = _.chain(characters)
.filter({ 'age': 36 })
.slice(2)
.take(5)
.value();
答案 1 :(得分:1)
为了与lodash链接,你需要先用_()
调用包装你的对象 - 这将允许在你的包装实例上调用任何lodash方法。然后,为了获得该值,您需要在包装对象上调用value
方法。所以你的例子看起来像这样:
filterAge = _(characters).filter({ 'age': 36 })
.slice(2)
.take(5).value();
如果没有包装你的对象,就不能链接函数调用,因为你总是只返回没有实现像take
这样的lodash方法的数组。