美文网首页
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数组对象常见的数学运算

    前言lodash我们平时经常使用,ES6出来后,我们用ES6的语法特性,也能很轻松的完成lodash的部分功能注意...

  • Numpy库的使用介绍

    导言 Numpy库是Python进行科学计算的基础库,它是一个由多维数组对象组成,包含数学运算、逻辑运算、形状操作...

  • ES6(八)迭代器与生成器3

    1.扩展运算符与非数组的可迭代对象 2.传递参数给迭代器 扩展运算符与非数组的可迭代对象 扩展运算符( ... )...

  • Chapter 4 Numpy基础

    ndarray简介 多维数组对象(ndarray)在运算上非常灵活,同长度的数组之间运算为各对应元素间的运算,而数...

  • vue.js 动态绑定 class

    数据变量 三目运算符 对象 数组 数据、对象混合

  • 异常

    常见异常: 空指针异常指定类不存在异常数学运算异常非法参数异常请求不允许异常数组下标越界异常 常见错误 堆栈内存溢...

  • Python编程学习第十课之Python运算符和操作对象

    Python中还有一种常见的操作就是运算符和操作对象,运算符是特殊符号的集合,之前我们数学中学习过的的加(+)、减...

  • ES6之解构赋值/剩余运算符/箭头函数

    扩展运算符(对象) 扩展运算符(数组) 扩展运算符和Object.assign对对象进行合并的行为,是属于浅拷贝 ...

  • Angular

    1.angular支持的运算 逻辑运算比较运算三目运算调用字符串对象的成员方法使用直接变量表示法创建对象使用数组(...

  • ES6之扩展运算符-数组

    数组的扩展运算符 (1) 复制数组(深拷贝) 注意点:...扩展运算符号只能是针对一维度的对象或数组进行深拷贝。不...

网友评论

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

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