一天一个Loadsh

224 阅读2分钟

为什么选择 Lodash ?

Lodash 通过降低 array、number、objects、string 等等的使用难度从而让 JavaScript 变得更简单。 Lodash 的模块化方法 非常适用于:

  • 遍历 array、object 和 string
  • 对值进行操作和检测
  • 创建符合功能的函数
数组
  1. chunk

    desc: 将一个数组切分成成多个子数组并重新组成一个新数组(即二维数组),例如[1,2,3,4,5] ==> [[1,2],[3,4,5]],如果array 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。

    impact: 不改变原数组,将返回新数组

    ex:

    import chunk from 'lodash/chunk';
    let array = ['a', 'b', 'c', 'd']
    let arrayChange = chunk(array, 2)
    conosle.log(arrayChange)  // [['a', 'b'], ['c', 'd']]
    conosle.log(array)  // ['a', 'b', 'c', 'd']
    

    application:

  2. compact

    desc: 将原数组中的 假值 进行过滤,例如falsenull,0""undefined, 和 NaN 都是被认为是“假值”。

    impact: 不改变原数组,返回新数组

    ex:

    import compact from 'lodash/compact';
    let array = ['a', 0, false, null, undefined, NaN, 'b']
    let arrayChange = compact(array)
    conosle.log(arrayChange)  // ['a', 'b']
    conosle.log(array)  // ['a', 0, false, null, undefined, NaN, 'b']
    

  3. concat

    desc:将一个数组与其他数组或则值添加到一起形成一个新的数组,tips:多维数组在连接时只能展开一层。 impact:不改变原数组,返回新数组 ex:

    import concat from 'lodash/concat';
    let array = ['a']
    let arrayChange = concat(array, 'b', ['c'], [['d'],['e']])
    conosle.log(arrayChange)  // ['a', 'b', 'c', ['d'], ['e']]
    conosle.log(array)  // ['a']
    

  4. difference

    desc: 有两个数组A,B, 取出A中A有但B没有的元素;即过滤出A数组中不包含B数组中的元素。其中元素的返回顺序由A数组原有顺序决定。tips:不能比较数组元素为引用对象的情况,请参考diffrenceBy。 impact:原数组不改变,返回一个新数组。 ex:

    import difference from 'lodash/difference';
    let array = ['a''b', 'c', 'd']
    let arrayChange = difference(array, ['a','d', 'e'])
    conosle.log(arrayChange)  // ['b', 'c']
    conosle.log(array)  // ['a', 'b', 'c', 'd']
    

  5. diffrenceBy

    desc: 相比于difference, 该方法多了一个迭代器iteratee,改迭代器会将两比较的数组分别放进迭代器处理后,以处理后的数组进行比较,但是返回的元素是未处理时的原数组的值。tips:该迭代器类型可为Array|Function|Object|string)

    ex:

    import difference from 'lodash/diffrenceBy';
    let array = [{ 'x': 2 }, { 'x': 1 }]
    let arrayChange = diffrenceBy(array, [{ 'x': 1 }], 'x') // 将两数组的x变量的值分别取出再单独比较
    conosle.log(arrayChange)  // [{ 'x': 2 }]
    conosle.log(array)  // [{ 'x': 2 }, { 'x': 1 }]