• lodash常用方法合集


    安装lodash

    建议安装lodash-es,lodash-es 是 lodash 的 es modules 版本 ,是着具备 ES6 模块化的版本,体积小。按需引入。

    示例

    npm i lodash-es
    import { chunk,compact } from 'lodash-es'; /**按需引入*/

    1.chunk 数组分组

    chunk(array, [size=1])

    参数

    array (Array): 需要处理的数组

    [size=1] (number): 每个数组区块的长度 */

    示例

    1. const arr = [2, 4, 6, 8, 10];
    2. const newArr = chunk(arr, 3);
    3. console.log("newArr:", newArr);
    4. // [ [ 2, 4, 6 ], [ 8, 10 ] ]

    2.compact 过滤假值

    创建一个新数组,包含原数组中所有的非假值元素。例如false, null,0, "", undefined, 和 NaN 都是被认为是“假值”。

    compact(array)

    参数

    array (Array): 待处理的数组 */

    示例

    1. const arr = [0, 1, false, 2, "", 3];
    2. const newArr = compact(arr);
    3. console.log("newArr:", newArr);
    4. // [ 1, 2, 3 ]

    3.differenceBy 根据指定的规则去除指定的值

    differenceBy(array, [values], [iteratee=_.identity])

    调用array 和 values 中的每个元素以产生比较的标准。 结果值是从第一数组中选择。iteratee 会调用一个参数:(value)。(注:首先使用迭代器分别迭代array 和 values中的每个元素,返回的值作为比较值)。

    参数
    1. array (Array): 要检查的数组。
    2. [values] (...Array): 排除的值。
    3. [iteratee=_.identity] (Array|Function|Object|string): iteratee 调用每个元素。示例

     示例:

    1. differenceBy([3.1, 2.2, 1.3], [4.4, 2.5], Math.floor);
    2. // => [3.1, 1.3]
    3. /*上面的代码实际上是两个数组根据第三个参数Math.floor进行迭代处理,
    4. 最后两个数组根据[3,2,1]和[4,2]进行比较*/
    5. // The `_.property` iteratee shorthand.
    6. differenceBy([{ 'x': 2,'y':1 }, { 'x': 1,'y':2 }], [{ 'x': 1,'y':1 }], 'y');
    7. // => [{ 'x': 1,'y':2 }]
    8. /*上面的代码实际上是两个数组根据第三个参数'y'进行迭代处理,
    9. 最后两个数组根据 键'y' 进行比较*/

    4.differenceWith 根据比较器去除指定的值

    differenceWith(array, [values], [comparator])

    它接受一个 comparator (注:比较器),它调用比较arrayvalues中的元素。 结果值是从第一数组中选择。comparator 调用参数有两个:(arrVal, othVal)

    参数
    1. array (Array): 要检查的数组。
    2. [values] (...Array): 排除的值。
    3. [comparator] (Function): comparator 调用每个元素。

    示例

    1. var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
    2. differenceWith(objects, [{ 'x': 1, 'y': 2 }], isEqual);
    3. // => [{ 'x': 2, 'y': 1 }]
    4. /*以上代码根据比较器isEqual比较两个数组里的值是否相等(不比较地址),
    5. 是的话去除*/

    5.   tail 获取除了array数组第一个元素以外的全部元素         

    tail(array)

    参数
    1. array (Array): 要检索的数组。

    示例

    1. const arr = [{ name: "xiaoming" }, { name: "dog" }, { name: "cat" }];
    2. const newArr = tail(arr);
    3. console.log(newArr);
    4. //[ { "name": "dog" }, { "name": "cat" } ]

    6.unionBy 合并数组,并且根据指定的规则去重

    unionBy([arrays], [iteratee=_.identity])

    参数
    1. [arrays] (...Array): 要检查的数组。
    2. [iteratee=_.identity] (Array|Function|Object|string): 迭代函数,调用每个元素。

    示例

    1. const arr = [{ name: "xiaoming" }];
    2. const newArr = unionBy(
    3. arr,[{ name: "dog" }, { name: "xiaoming" }],"name"
    4. );
    5. console.log(newArr);
    6. //[ { "name": "xiaoming" }, { "name": "dog" } ]
    7. unionBy([2.1], [1.2, 2.3], Math.floor);
    8. // => [2.1, 1.2]

    7.unionWith 合并数组,根据比较器去重

    unionWith([arrays], [comparator])

    参数
    1. [arrays] (...Array): 要检查的数组。
    2. [comparator] (Function): 比较函数,调用每个元素。
    1. var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
    2. var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
    3. unionWith(objects, others, isEqual);
    4. // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]

    8.size 检测数据长度

    size(collection)

    参数
    1. collection (Array|Object|String): 要检查的数据

    示例

    1. size([1, 2, 3]);
    2. // => 3
    3. size({ 'a': 1, 'b': 2 });
    4. // => 2
    5. size('pebbles');
    6. // => 7

    9.sortBy 数组对象排序

    sortBy(collection, [iteratees=[_.identity]])

    参数
    1. collection (Array|Object): 用来迭代的集合。
    2. [iteratees=[_.identity]] (...(Array|Array[]|Function|Function[]|Object|Object[]|string|string[])): 这个函数决定排序。
    1. const users = [
    2. { 'user': 'fred', 'age': 48 },
    3. { 'user': 'barney', 'age': 36 },
    4. { 'user': 'fred', 'age': 40 },
    5. { 'user': 'barney', 'age': 34 }
    6. ];
    7. sortBy(users, function(o) { return o.user; });
    8. // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
    9. sortBy(users, 'age' });
    10. // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]
    11. sortBy(users, ['user', 'age']);
    12. // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]
    13. sortBy(users, 'user', function(o) {
    14. return Math.floor(o.age / 10);
    15. });
    16. // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]

    10.clone 浅拷贝

    clone(value)

    参数
    1. value (*): 要拷贝的值

    示例

    1. const objects = [{ 'a': 1 }, { 'b': 2 }];
    2. var shallow = clone(objects);
    3. console.log(shallow[0] === objects[0]);
    4. // => true

    11.cloneDeep 深拷贝

    cloneDeep(value)

    参数
    1. value (*): 要深拷贝的值。

    示例

    1. const objects = [{ 'a': 1 }, { 'b': 2 }];
    2. const deep = cloneDeep(objects);
    3. console.log(deep[0] === objects[0]);
    4. // => false

    12.isEqual 深比较来确定两者的值是否相等

    isEqual(value, other)

    参数
    1. value (*): 用来比较的值。
    2. other (*): 另一个用来比较的值。
    1. const arr = [
    2. { name: "xiaoming" },
    3. { name: "dog" },
    4. { name: "cat", info: { address: "翻斗花园" } },
    5. ];
    6. const newArr = [
    7. { name: "xiaoming" },
    8. { name: "dog" },
    9. { name: "cat", info: { address: "翻斗花园" } },
    10. ];
    11. console.log(isEqual(arr, newArr));
    12. // true
    13. arr === newArr;
    14. // => false

    13. 二次封装防抖,节流

    1. import {throttle,debounce} from 'lodash-es';
    2. //节流
    3. export const throttled = throttle(
    4. (fun, ...args) => fun(...args),
    5. 1500,
    6. {
    7. leading: true,
    8. trailing: false
    9. }
    10. );
    11. //防抖
    12. export const debounced = debounce(
    13. (fun, ...args) => fun(...args),
    14. 500
    15. );
    16. //页面使用
    17. <button @click=throttled(handleQuery,name,id)>查询button>
  • 相关阅读:
    2022第三届云原生编程挑战赛--Serverless VSCode WebIDE使用体验
    更换可执行文件glibc版本的某一次挣扎
    小程序源码:王者战力查询,游戏扫码登录,王者巅峰信息查询等等支持流量主收益和CPS收益-多玩法安装简单
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java房屋租赁管理系统d97n3
    几行代码把Chrome搞崩溃之:HTML5 MP3录音由ScriptProcessorNode升级成AudioWorkletNode采坑记
    Faiss原理和使用总结
    OpenCV(十九):模板匹配
    python安装第三方包的几种方式
    SAP 电商云 Spartacus UI 里的 ASM 模块启用的前置条件
    远程小组软件开发过程(2):工具
  • 原文地址:https://blog.csdn.net/yxlyttyxlytt/article/details/133788922