美文网首页
5.Lodash的常用方法

5.Lodash的常用方法

作者: yaoyao妖妖 | 来源:发表于2020-07-22 17:07 被阅读0次
    1. N次循环
    // js
    for(let  i = 0;i< 5;i++){}
    
    // Lodash
    _.times(5,function () {
    })
    

    2.深度查找属性值

    // js
    testArr.map(function () {
      return  testArr.pets[0].name;
    });
    // Lodash
    _.map(testArr, "pets[0].name")
    

    3.深拷贝

    // js
    JSON.parse(JSON.stringify(objectToClone)) // 不支持函数
    
    //
    var objA = {
      "name": "yaoyao"
    }
    // Lodash
    var objB = _.cloneDeep(objA) // 支持函数
    
    objB === objA // false
    

    4.随机数

    // js
    function getRandomNumber(min, max) {
      return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    // Lodash
    _.random(15, 20, true) //还可以在15到20之间生成随机的浮点数
    

    5.对象的扩展

    // js
    Object.prototype.extend = function (obj) {
      for (var i in obj) {
        if (obj.hasOwnProperty(i)) {
          this[i] = obj[i];
        }
      }
    }
    
    var objA = {"name": "colin", "car": "suzuki"};
    var objB = {"name": "james", "age": 17};
    
    objA.extend(objB);
    objA; // {"name": "james", "age": 17, "car": "suzuki"};
    
    
    // Lodash
    _.assign(objA, ojbB);
    // _.assign 是浅拷贝, 和ES6新增的 Object.assign 函数功能一致(建议优先使用Object.assign)。
    

    6.筛选属性

       _.pick 是 _.omit 的相反操作,用于从其他对象中挑选属性生成新的对象。
       _.omit 用于从其他对象中删去属性生成新的对象。
    
    // Native method: Remove an array of keys from object
    Object.prototype.remove = function(arr) {
      var that = this;
      arr.forEach(function(key){
        delete(this[key]);
      });
    };
    
    var objA = {"name": "colin", "car": "suzuki", "age": 17};
    
    objA.remove(['car', 'age']);
    objA; // {"name": "colin"}
    
    // Lodash
    objA = _.omit(objA, ['car', 'age']);
    // => {"name": "colin"}
    
    objA = _.omit(objA, "car");
    // => {"name": "colin", "age": 17}
    
    objA = _.omit(objA, _.isNumber);
    // => {"name": "colin", "car": "suzuki"};
    
    // 大多数情况下,Lodash所提供的辅助函数都会比原声的函数更贴近开发需求。在上面的代码中,开发者可以使用数组、
    // 字符串以及函数的方式筛选对象的属性,并且最终会返回一个新的对象,中间执行筛选时不会对旧对象产生影响。
    
    // Native method: Returning a new object with selected properties
    Object.prototype.pick = function(arr) {
      var _this = this;
      var obj = {};
      arr.forEach(function(){
        obj[key] = _this[key];
      });
    
      return obj;
    };
    
    var objA = {"name": "colin", "car": "suzuki", "age": 17};
    
    var objB = objA.pick(['car', 'age']);
    // => {"car": "suzuki", "age": 17}
    
    // Lodash
    var objB = _.pick(objA, ['car', 'age']);
    // => {"car": "suzuki", "age":17}
    

    8.随机元素,从数组中随机挑选元素

    
    var luckDraw = ["Colin", "John", "James", "Lily", "Mary"];
    
    function pickRandomPerson(luckyDraw){
      var index = Math.floor(Math.random() * (luckyDraw.length - 1));
      return luckyDraw[index];
    }
    
    pickRandomPerson(luckyDraw); //John
    
    // Lodash
    _.sample(luckyDraw); // Colin
    
    // Lodash - Getting 2 random item
    _.sample(luckyDraw, 2); // ['John', 'Lily']
    
    var luckDraw = ["Colin", "John", "James", "Lily", "Mary"];
    
    function pickRandomPerson(luckyDraw){
      var index = Math.floor(Math.random() * (luckyDraw.length - 1));
      return luckyDraw[index];
    }
    
    pickRandomPerson(luckyDraw); //John
    
    // Lodash
    _.sample(luckyDraw); // Colin
    
    // Lodash - Getting 2 random item
    _.sample(luckyDraw, 2); // ['John', 'Lily']
    

    9.针对JSON.parse 的错误处理

    // Using try-catch to handle the JSON.parse error
    function parse(str){
      try {
        return JSON.parse(str);
      }
    
      catch(e) {
        return false;
      }
    }
    
    // With Lodash
    function parseLodash(str){
      return _.attempt(JSON.parse.bind(null, str));
    }
    
    parse('a');
    // => false
    parseLodash('a');
    // => Return an error object
    
    parse('{"name": "colin"}');
    // => Return {"name": "colin"}
    parseLodash('{"name": "colin"}');
    // => Return {"name": "colin"}
    
    
    // 如果你在使用 JSON.parse 时没有预置错误处理,那么它很有可能会成为一个定时炸弹,我们不应该默认接收的JSON对象都是有效的。 try-catch 是常见的错误处理方式,如果项目中使用Lodash,
    // 那么可以使用 _.attmpt 替代 try-catch 的方式,当解析JSON出错时,该方法会返回一个 Error 对象。
    

    10.使用箭头函数创建可复用的路径

    const object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
    
    [
      obj => obj.a[0].b.c,
      obj => ojb.a[1]
    ].map(path => path(object));
    
    // 使用箭头函数编写链式调用
    const pipe = function => data => {
      return functions.reduce(
        (value, func) => func(value),
        data
      );
    };
    
    const pipeline = pipe([
      x => x * 2,
      x => x / 3,
      x => x > 5,
      b => !b
    ]);
    
    pipeline(5);
    // true
    pipeline(20);
    // false
    
    
    //在ES6中,如果一个函数只接收一个形参且函数提示一个 return 语句, 就可以使用箭头函数简化为:
    
    const func = p => v;
    
    // 类似于(不完全相同)
    const func = function(p) {
      return v;
    }
    //当有多重嵌套时,可以简化为:
    const func = a => b => c => a + b + c;
    func(1)(2)(3);
    // => 6
    
    // 类似于
    const func = function (a) {
      return function (b) {
        return function (c) {
          return a + b + c;
        }
      }
    }
    
    

    相关文章

      网友评论

          本文标题:5.Lodash的常用方法

          本文链接:https://www.haomeiwen.com/subject/cexauctx.html