js-lodash-对象

 let c = console.log
    // 归类 groupBy 数组[number] 分组
    let arr = [42.1, 42.3, 22.3, 22.5]
    c(_.groupBy(arr, Math.floor)) // 根据函数迭代分类
    arr = ['one', 'two', 'three', 'ten', 'olive']
    c(_.groupBy(arr, 'length')) // 根据字段长度分类
    c(_.groupBy(arr, 0)) // 根据指定第几个下标分类
    arr = ['活宝', '呼呼', '呼吸', '死了', '活着'] // 中文分类
    c(_.groupBy(arr, 0))
    // 第二个参数,一种是传入函数进行迭代,一种是传入下标,比如0,按照第0个下标的值来归类。
    
    // 出现的次数 countBy(数组,回调函数),回调函数返回下标,对下标进行次数累计。
    c(_.countBy([6.1, 4, 6.2, 9, 9.3], Math.floor)) // 根据用户标签或者评价,统计喜好,出数据图。也可以用于页面点击统计,操作统计之类。
    const emoFn = (v) => {
      let cate = [
        '一般',
        '不喜欢',
        '喜欢',
      ]
      return cate.findIndex(item => v.includes(item))
    }
    c(_.countBy(['喜欢', '很喜欢', '一般', '一般', '不喜欢', '非常不喜欢'], emoFn))

    // 排序 orderBy(数组,[字段1,字段2, ...], [排序方式,升序,降序, ...])
    let users = [
      { 'user': '小明',   'age': 48, 'active': false },
      { 'user': '小红', 'age': 34, 'active': true },
      { 'user': '小白',   'age': 40, 'active': false },
      { 'user': '小花', 'age': 36, 'active': false }
    ]
    c(_.orderBy(users, ['age'], ['desc']))

    // 处理每个元素 invokeMap(数组,函数,函数的参数)
    c(_.invokeMap([[5, 1, 7], [2, 3, 4]], 'sort')) // 多维数组排序
    c(_.invokeMap([123, 456], String.prototype.split, ''))  // 多维数组加引号
    c(_.flatMap(_.invokeMap([123, 456], String.prototype.split, '',)).join('-')) // 将二维数组字符串化后,扁平化,最后分割。 1-2-3-4-5-6

    // partition 数组[对象] 分组,产品分类,多类型分组。返回多个分组数组。
    c(_.partition(users, {'age': 48}))
    c(_.partition(users, {'active': false}))
    c(_.partition(users, 'active')) // 根据该字段分组

    // 返回随机数
    c(_.sample([1,2, 3,4,5, 6, 7, 8, 9]))
    // 返回n个随机数
    c(_.sampleSize([1,2, 3,4,5, 6, 7, 8, 9], 2))

    // 打乱值的数组
    c(_.shuffle([1, 2, 3, 4, 5, 6, 7, 8, 9]))

    // 增强版 includes(数组,值,开始搜索位置)
    c(_.includes([1, 2, 3], 1))
    c(_.includes([1, 2, 3], 1, 2))

    // 根据key分类 keyBy(数组,函数/key), 返回对象,{key作为新的下标:对象}
    c(_.keyBy(users, 'age'))
    c(_.keyBy(users, 'active')) // 相同的key会被最后一个代替。
    

通过观察,可以得出这样的使用技巧:相比es6的函数,lodash提供了一种更方便的方法来获取或转换结果:
比如:filter

    es6
    arr.filter(item => item === 0) // 单独提供一个函数方式,自行处理
    lodash
    _.filter(arr, 函数/数组/对象/字符串) // 多种类型的传入,更加方便开发者使用。
    _.filter(arr, {'key', 0})
    // 另外filter的反向方法是reject

ps:其他未写包括reduce,every,some,each,eachRight,findLast,flatMapDeep,flatMapDepth,forEach,forEachRight,map,size,reject

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值