集合

  • _.reduce():对数组或集合进行归约操作。它从数组的第一个元素开始,依次对每个元素执行一个用户提供的函数,并将结果累积到一个累加器上,最终返回累加器的值

    _.reduce(collection, iteratee, [accumulator], [initAccum])
    /**
     * collection: 要遍历的集合,可以是数组、对象等。
     * iteratee: 用于每个元素的回调函数,可以接收四个参数:accumulator(累加器),value(当前元素),index(当前索引),collection(集合本身)。
     * accumulator: (可选)初始值,如果未提供,则将集合的第一个元素作为初始值。
     * initAccum: (可选)布尔值,指示是否将第一个元素作为初始值,默认为 false。
     */
    
    let sum = _.reduce([1, 2, 3, 4], (accumulator, value)=> {
      return accumulator + value;
    }, 0);
    
    console.log(sum); // 输出: 10
  • _.groupBy():将集合(数组或对象)的元素按特定条件分组。它会创建一个对象,其中每个键代表分组的条件,值为满足该条件的元素数组

    _.groupBy(collection, iteratee)
    /**
     * collection: 要进行分组的集合,可以是数组或对象。
     * iteratee: 分组的条件,可以是属性名、函数或者字符串,如果是字符串,表示根据该属性的值进行分组。
     */
    const users = [
      { 'user': 'Alice', 'age': 25, 'active': true },
      { 'user': 'Bob', 'age': 30, 'active': false },
      { 'user': 'Charlie', 'age': 25, 'active': true },
      { 'user': 'David', 'age': 30, 'active': true }
    ];
    
    // 按年龄分组
    const groupedByAge = _.groupBy(users, 'age');
    
    console.log(groupedByAge);
    /*
    输出:
    {
      '25': [
        { 'user': 'Alice', 'age': 25, 'active': true },
        { 'user': 'Charlie', 'age': 25, 'active': true }
      ],
      '30': [
        { 'user': 'Bob', 'age': 30, 'active': false },
        { 'user': 'David', 'age': 30, 'active': true }
      ]
    }
    */
  • _.countBy():对集合中的元素进行计数。它会创建一个对象,其中每个键表示某个特定条件的结果,值为该条件对应的元素数量

    _.countBy(collection, iteratee)
    /**
     * collection: 要进行计数的集合,可以是数组或对象。
     * iteratee: 计数的条件,可以是属性名、函数或者字符串。如果是字符串,表示根据该属性的值进行计数。
     /
     
     const users = [
      { 'user': 'Alice', 'age': 25, 'active': true },
      { 'user': 'Bob', 'age': 30, 'active': false },
      { 'user': 'Charlie', 'age': 25, 'active': true },
      { 'user': 'David', 'age': 30, 'active': true }
    ];
    
    // 按年龄计数
    const countByAge = _.countBy(users, 'age');
    
    console.log(countByAge);
    /*
    输出:
    {
      '25': 2,
      '30': 2
    }
    */
  • _.filter() :用于从集合(数组或对象)中筛选出符合指定条件的元素。它返回一个新数组,包含所有满足条件的元素

    _.filter(collection, predicate)
    /**
     * collection: 要进行过滤的集合,可以是数组或对象。
     * predicate: 筛选条件,可以是函数、属性名或其他条件。如果是函数,它会对每个元素进行测试,返回 true 或 false 来决定该元素是否包含在结果中
     /
    
    const users = [
      { 'user': 'Alice', 'age': 25, 'active': true },
      { 'user': 'Bob', 'age': 30, 'active': false },
      { 'user': 'Charlie', 'age': 25, 'active': true },
      { 'user': 'David', 'age': 30, 'active': true }
    ];
    
    // 通过活跃状态过滤用户
    const activeUsers = _.filter(users, { 'active': true });
    
    console.log(activeUsers);
    /*
    输出:
    [
      { 'user': 'Alice', 'age': 25, 'active': true },
      { 'user': 'Charlie', 'age': 25, 'active': true },
      { 'user': 'David', 'age': 30, 'active': true }
    ]

数组

  • _.chunk():将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。 如果array 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块

    _.chunk(array, [size=1])
    _.chunk(['a', 'b', 'c', 'd'], 2);
    // => [['a', 'b'], ['c', 'd']]

函数

  • _.once():创建一个只能调用 func 一次的函数。 重复调用返回第一次调用的结果。 func 调用时, this 绑定到创建的函数,并传入对应参数

    var initialize = _.once(createApplication);
    initialize();
    initialize();
    // `initialize` 只能调用 `createApplication` 一次。

其它

  • _.cloneDeep():深拷贝

    var objects = [{ 'a': 1 }, { 'b': 2 }];
     
    var deep = _.cloneDeep(objects);
    console.log(deep[0] === objects[0]);
    // => false
最后修改:2024 年 10 月 17 日
如果觉得我的文章对你有用,请随意赞赏