美文网首页
30-seconds-code数组对象常见的数学运算

30-seconds-code数组对象常见的数学运算

作者: 付出的前端路 | 来源:发表于2018-07-11 17:38 被阅读0次

    前言
    lodash我们平时经常使用,ES6出来后,我们用ES6的语法特性,也能很轻松的完成lodash的部分功能
    注意点:数组对象跟数组的操作唯一不同的地方在于,涉及数组对象的操作都要进行key值的指定。

    Math:

    1. maxBy: 返回最大值
      lodash
    var objects = [{ 'n': 1 }, { 'n': 2 }];
    
    _.maxBy(objects, function(o) { return o.n; });
    // => { 'n': 2 }
    
    // The `_.property` iteratee shorthand.
    _.maxBy(objects, 'n');
    // => { 'n': 2 }
    

    ES6

    const maxBy = (arr, fn) => Math.max(...arr.map(typeof fn === 'function' ? fn : val => val[fn]));
    maxBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], o => o.n); // 8
    maxBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], 'n'); // 8
    
    1. meanBy: 返回平均值
      lodash
    var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
     
    _.meanBy(objects, function(o) { return o.n; });
    // => 5
     
    // The `_.property` iteratee shorthand.
    _.meanBy(objects, 'n');
    // => 5
    

    ES6

    const averageBy = (arr, fn) =>
      arr.map(typeof fn === 'function' ? fn : val => val[fn]).reduce((acc, val) => acc + val, 0) /
      arr.length;
    averageBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], o => o.n); // 5
    averageBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], 'n'); // 5
    

    3.minBy: 返回最小值
    lodash

    var objects = [{ 'n': 1 }, { 'n': 2 }];
     
    _.minBy(objects, function(o) { return o.n; });
    // => { 'n': 1 }
     
    // The `_.property` iteratee shorthand.
    _.minBy(objects, 'n');
    // => { 'n': 1 }
    

    ES6

    const minBy = (arr, fn) => Math.min(...arr.map(typeof fn === 'function' ? fn : val => val[fn]));
    minBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], o => o.n); // 2
    minBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], 'n'); // 2
    

    4.sumBy:返回总和
    lodash

    var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
     
    _.sumBy(objects, function(o) { return o.n; });
    // => 20
     
    // The `_.property` iteratee shorthand.
    _.sumBy(objects, 'n');
    // => 20
    

    ES6

    const sumBy = (arr, fn) =>
      arr.map(typeof fn === 'function' ? fn : val => val[fn]).reduce((acc, val) => acc + val, 0);
    

    相关文章

      网友评论

          本文标题:30-seconds-code数组对象常见的数学运算

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