lodash链如何工作?

Joh*_*sby 2 javascript lodash

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));
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/lodash/4.17.2/lodash.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

小提琴

Jon*_*ski 5

您可以在描述中找到有关链或序列的文档_(value)以及该库的其他“ Seq”函数/方法。

要与lodash链接,您将需要使用_(value)_.chain(value)创建一个序列,.value()最后要检索结果。

在这两者之间,lodash的其他每个功能都可以作为序列方法使用,但有两个区别:

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

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

例如:

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