Javascript lodash链是如何工作的?

Javascript lodash链是如何工作的?,javascript,lodash,Javascript,Lodash,Lodash v4.17.2 有人能澄清一下链锁是如何工作的吗?我只是没有找到任何文档或博客来解释lodash方法的返回结果。 在下面的代码示例中,为什么对filterAge的第二个赋值不起作用?或者类似于jquery的链接?如果有人能解释这一点,我会喜欢的 let字符=[ {'name':'barney1','age':36,'pets':['hoppy']}, {'name':'barney2','age':36,'pets':['hoppy']}, {'name':'barney3','

Lodash v4.17.2

有人能澄清一下链锁是如何工作的吗?我只是没有找到任何文档或博客来解释lodash方法的返回结果。 在下面的代码示例中,为什么对filterAge的第二个赋值不起作用?或者类似于jquery的链接?如果有人能解释这一点,我会喜欢的

let字符=[
{'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']}
];
让filterAge=u.take(u.slice(u.filter(字符,{'age':36}),2),5);
filterAge=u2;.filter(字符,{'age':36})
.切片(2)
.采取(5);
log(JSON.stringify(filterAge))

为了与lodash链接,您需要首先使用call包装您的对象-这将允许在包装的实例上调用任何lodash方法。然后,为了获得值,需要对包装对象调用
value
方法。因此,您的示例如下所示:

filterAge = _(characters).filter({ 'age': 36 })
                         .slice(2)
                         .take(5).value();

如果不包装对象,则无法链接函数调用,因为您总是只返回未实现lodash方法(如
take
)的数组。

您可以在库的描述和其他“Seq”函数/方法中找到有关链接或序列的文档

要与lodash链接,您需要使用
(value)
或创建一个序列,并在最后检索结果

在这两者之间,lodash的每个其他功能将作为序列方法提供,有两个区别:

  • 这些方法返回一个修改过的序列对象,该对象保存当前值而不是值本身,但
    .value()
    方法除外

  • 第一个参数已被删除。每个方法都从它前面的序列对象而不是参数中获取要处理的值。并且,对于方法,传递给函数的其他参数将向左移动一个位置

例如:

filterAge = _.chain(characters)
    .filter({ 'age': 36 })
    .slice(2)
    .take(5)
    .value();