• Lodash的部分用法


    因为项目中有在使用Lodash的用法,发现蛮好用的,于是乎上官方文档学习了一下相关方法,话不读说,先附上官网地址:

    https://www.lodashjs.com/

    Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。

    介绍几个我在项目中使用的方法:

    (1)_.cloneDeep(value)

    这个方法类似_.clone,除了它会递归拷贝 value。其实也叫深拷贝

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. <script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
    9. </head>
    10. <body>
    11. <script>
    12. let objects = {
    13. name: '黎明',
    14. score: ['20', '30', '40'],
    15. hobby: {
    16. sing: '今夜你会不会来',
    17. index: 1
    18. }
    19. }
    20. let deep = _.cloneDeep(objects); //_.cloneDeep其实是一个深拷贝的方法
    21. objects.score.push('50')//验证一下深拷贝有没有拷贝下来数据
    22. console.log(deep);
    23. </script>
    24. </body>
    25. </html>

    看一下运行结果:

    可以看到已经完成了对数据的深拷贝了。 

    (2) _.uniqBy()

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. <script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
    9. </head>
    10. <body>
    11. <script>
    12. //返回新的去重后的数组
    13. console.log(_.uniqBy([2.1, 1.2, 2.3], Math.floor));//向下取值 2.1 1.2
    14. console.log(_.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'));//{ 'x': 1 }, { 'x': 2 }
    15. </script>
    16. </body>
    17. </html>

    看一下运行结果:

    (3) _.find()

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. <script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
    9. </head>
    10. <body>
    11. <script>
    12. // _.find()包含三个参数:
    13. // 1.一个用来迭代的集合,这里指的是users数组
    14. // 2.每次迭代调用的函数 ,这里指的是function(d){}这个函数
    15. // 3.开始搜索的索引位置 ,这里指的是满足d.age < 40 这个条件的第一项值
    16. let users = [
    17. { 'user': 'barney', 'age': 36, 'active': true },
    18. { 'user': 'fred', 'age': 40, 'active': false },
    19. { 'user': 'pebbles', 'age': 1, 'active': true }
    20. ];
    21. let res=_.find(users, function(d) { return d.age < 40; });//来寻找第一个满足条件的元素,其实就是数组的find方法
    22. console.log(res);//输出数组的第一项值,因为第一项满足条件了
    23. </script>
    24. </body>
    25. </html>

    看一下运行结果:

    (4) _.groupBy()

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. <script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
    9. </head>
    10. <body>
    11. <script>
    12. // _.groupBy()包含两个个参数:
    13. // 1.一个用来迭代的集合,这里指的是数组[6.1, 4.2, 6.3]
    14. // 2.这个迭代函数用来转换key ,这里指的是 46 这两个key
    15. let res= _.groupBy([6.1, 4.2, 6.3], Math.floor);//向下取值
    16. console.log(res);// => { '4': [4.2], '6': [6.1, 6.3] }
    17. </script>
    18. </body>
    19. </html>

    看一下运行结果:

    再举一个例子:

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. <script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
    9. </head>
    10. <body>
    11. <script>
    12. // _.groupBy()包含两个个参数:
    13. // 1.一个用来迭代的集合,这里指的是数组['one', 'two', 'three'],实际项目中这里其实是接口返回的数据(数组结构形式)
    14. // 2.这个迭代函数用来转换key ,这里指的是 35 这两个key值,因为要输出数组的每一项数据
    15. let res= _.groupBy(['one', 'two', 'three'], 'length');
    16. console.log(res);
    17. </script>
    18. </body>
    19. </html>

     看一下运行结果:

    (5) _.map()

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. <script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
    9. </head>
    10. <body>
    11. <script>
    12. // _.map()包含两个参数:(其实就是数组的map方法)
    13. // 1.一个用来迭代的集合,这里指的是数组[4, 8],实际项目中这里其实是接口返回的数据(数组结构形式)
    14. // 2.每次迭代调用的函数 ,这里指的是fn这个函数
    15. //返回新的映射后数组,数组的长度并不会改变
    16. function fn(n) {
    17. return n * n;
    18. }
    19. let res= _.map([4, 8], fn);
    20. console.log(res); // [16, 64]
    21. </script>
    22. </body>
    23. </html>

     看一下运行结果:

     再举一个例子:

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. <script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
    9. </head>
    10. <body>
    11. <script>
    12. // _.map()包含两个参数:(其实就是数组的map方法)
    13. // 1.一个用来迭代的集合,这里指的是数组users ,实际项目中这里其实是接口返回的数据(数组结构形式)
    14. // 2.每次迭代调用的函数 ,这里指的是要遍历users数组的每一项值
    15. //返回新的映射后数组,数组的长度并不会改变
    16. let users = [{
    17. 'user': 'barney'
    18. },
    19. {
    20. 'user': 'fred'
    21. }
    22. ];
    23. // The `_.property` iteratee shorthand.
    24. let res = _.map(users, 'user');
    25. console.log(res); // => ['barney', 'fred'] 返回的是遍历的每一项值
    26. </script>
    27. </body>
    28. </html>

    看一下运行结果:

    (6) _.sumBy()

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. <script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
    9. </head>
    10. <body>
    11. <script>
    12. // _.sumBy包含两个参数:
    13. // 1.要迭代的数组,这里指的是数组objects,实际项目中这里其实是接口返回的数据(数组结构形式)
    14. // 2.调用每个元素的迭代函数 ,这里指的是function这个函数
    15. //返回总和
    16. let objects = [{
    17. 'n': 4
    18. }, {
    19. 'n': 2
    20. }, {
    21. 'n': 8
    22. }, {
    23. 'n': 6
    24. }];
    25. //下面这两种写法是等价的
    26. let res1 = _.sumBy(objects, function (o) {
    27. return o.n;//一个是返回每一项的值相加
    28. });
    29. console.log(res1); // => 20
    30. let res2 = _.sumBy(objects, 'n');//一个是把每一项的值直接传入
    31. console.log(res2); // => 20
    32. </script>
    33. </body>
    34. </html>

    看一下运行结果:

    (7) _.ceil()

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. <script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
    9. </head>
    10. <body>
    11. <script>
    12. //_.ceil包含两个参数:其实就是Math.ceil()方法
    13. // 1.要向上舍入的值,这里指的是4.006 6.004 6040
    14. // 2.向上舍入的的精度 ,这里指的是 2 和-2
    15. //返回总和
    16. let res1 = _.ceil(4.006);
    17. console.log(res1); // => 5
    18. let res2 = _.ceil(6.004, 2); //保留2位小数
    19. console.log(res2); // => 6.01
    20. let res3 = _.ceil(6040, -2);
    21. console.log(res3);// => 6100
    22. </script>
    23. </body>
    24. </html>

    看一下运行结果:

    (8) _.filter()

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. <script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
    9. </head>
    10. <body>
    11. <script>
    12. //_.filter包含两个参数:其实就是数组的filter方法
    13. // 1.一个用来迭代的集合,这里指的是数组users
    14. // 2.每次迭代调用的函数 ,这里指的是 function
    15. //返回一个新的过滤后的数组
    16. let users = [{
    17. 'user': 'barney',
    18. 'age': 36,
    19. 'active': true
    20. },
    21. {
    22. 'user': 'fred',
    23. 'age': 40,
    24. 'active': false
    25. }
    26. ];
    27. let res = _.filter(users, function (o) {
    28. return !o.active;
    29. }); //要过滤出取反的一项
    30. console.log(res); // => objects for ['fred']
    31. </script>
    32. </body>
    33. </html>

    看一下运行结果:

    (9) _.remove()

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. <script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
    9. </head>
    10. <body>
    11. <script>
    12. // _.remove包含两个参数:
    13. // 1.要修改的数组,这里指的是数组array
    14. // 2.每次迭代调用的函数 ,这里指的是 function
    15. //返回移除元素组成的新数组
    16. var array = [1, 2, 3, 4];
    17. var evens = _.remove(array, function (n) {
    18. return n % 2 == 0; //取余,其实是要输出偶数
    19. });
    20. console.log(array);// => [1, 3]
    21. console.log(evens);// => [2, 4]
    22. </script>
    23. </body>
    24. </html>

     看一下运行结果:

    就说这么多吧,详细的还是多看看官方文档,我这里只是大概介绍一下,不难的这个。 

  • 相关阅读:
    canvas绘制基本图形——矩形
    【cmake】cmake应用:安装和打包
    剑指 Offer 10- II. 青蛙跳台阶问题【力扣】
    国庆假期买哪款耳机好?国庆假期必备蓝牙耳机推荐
    界面控件Telerik UI for WPF - 如何使用RadSpreadsheet记录或评论
    非线性链表之树结构和堆的代码实现
    【首因效应】第一印象
    Gartner 2022年顶级战略技术趋势报告
    AJAX学习笔记7 AJAX实现省市联动
    android 12.0app应用卸载黑名单
  • 原文地址:https://blog.csdn.net/huihui_999/article/details/127778679