lodash 集合 使用详解

553 阅读2分钟

小知识,大挑战!本文正在参与“  程序员必备小知识  ”创作活动

文档链接 如果有 Underscore 修改成lodash的方法 一些方法变动的方法, 已用到的函数开始记录

chain

进行复杂的多步操作时使用chain。 简单举例:

var users = [ 
  { "name": "小张", "color": "blue", "age": "22" }, 
{ "name": "小王", "color": "blue", "age": "11" },
{ "name": "小李", "color": "green", "age": "18" }];
var result = _ .chain(users) 
.sortBy('age')
.value();

输出:

{user: '小王', age: 1, "color": "blue"}
{user: '小李', age: 36, "color": "green"}
{user: '小张', age: 40, "color": "blue"}

groupBy

故名思义,通过什么进行分组的意思 简单举例:

var data = [{ "name": "小张", "color": "blue", "age": "22" }, { "name": "小王", "color": "blue", "age": "11" },{ "name": "小李", "color": "green", "age": "18" }];
var result = _.chain(users)
      .groupBy('color')
      .map((value, key) => ({ color: key, users: value }))
      .value()

输出:

{color: 'blue', users: Array(2)}
{color: 'green', users: Array(1)}

keyBy

通过便利集合,返回以key作为参数的集合 简单举例:

var data = [{ "name": "小张", "color": "blue", "age": "22" }, { "name": "小王", "color": "blue", "age": "11" },{ "name": "小李", "color": "green", "age": "18" }];
var result = _.chain(users)
      .groupBy('color')
      .map((value, key) => ({ color: key, users: value }))
      .keyBy('color')
      .value()

输出:

blue:{color: 'blue', users: Array(2)}
green:{color: 'green', users: Array(1)}

举一反三:其中涉及到的countByorderBysortBy 也就很好理解了, 具体使用可以查看文章开头的链接查看

reduce

遍历集合中的每个元素。 每次返回的值会作为下一次 iteratee 使用 简单举例:

_.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { (result[value] || (result[value] = [])).push(key); return result;}, {});

输出:

{ '1': ['a', 'c'], '2': ['b'] } (无法保证遍历的顺序)

some

检查collection(集合)中的元素是否存在 任意 truthy(真值)的元素,一旦执行到不符合的条件 返回 truthy(真值),遍历就停止

var users = [ { 'user': 'barney', 'active': true }, { 'user': 'fred', 'active': false }];
_.some(users, { 'user': 'barney', 'active': false });

输出:

false

以上就是全部内容 forEach invokeMap flatMap find size等等就不一一说。使用的时候再往里面补充,持续输出中。。。