Skip to content

Lodash - 数学

Lodash 包含了一些用于执行常见数学运算的函数。尽管 JavaScript 内置的 Math 对象提供了核心功能,但 Lodash 通常会增加便利性,尤其是在处理数字集合或需要特定精度时。

方法与语法描述与原生 JS 对比
.add(augend, addend)
.subtract(minuend, subtrahend)
.multiply(multiplier, multiplicand)
.divide(dividend, divisor)
基本的算术运算:加法、减法、乘法、除法。功能上与原生的 +, -, *, / 运算符相似,但作为函数提供,可在函数式组合(例如,与 _.reduce 一起使用)中发挥作用。
.ceil(number, [precision=0])
.floor(number, [precision=0])
_.round(number, [precision=0])
将 number 向上(ceil)、向下(floor)或四舍五入(round)到最接近的整数/精度。与 Math.ceil/floor/round 不同,这些方法接受可选的 precision 参数,用于指定要舍入到特定的十进制位数(正精度)或 10 的幂(负精度)。
.max(array)
.min(array)
计算 array 中的最大值或最小值。如果数组为空或 falsey,则返回 undefined。原生的 Math.max(...array) 和 Math.min(...array) 可以达到类似的效果,但由于参数限制,可能在非常大的数组上失败。
.maxBy(array, [iteratee=.identity])
.minBy(array, [iteratee=.identity])
在 array 中查找应用 iteratee 函数后产生最大值或最小值的元素。对于查找具有最高/最低属性值的对象非常有用。原生 JS 需要排序或手动迭代。
.mean(array)
.meanBy(array, [iteratee=_.identity])
计算 array 中值的平均值。meanBy 在计算平均值之前对每个元素应用 iteratee。没有直接的原生对应方法。
.sum(array)
.sumBy(array, [iteratee=_.identity])
计算 array 中值的总和。sumBy 在求和之前对每个元素应用 iteratee。虽然可以使用原生的 reduce 实现求和,但 _.sum/sumBy 通常更简洁。
_.ceil(4.006); // => 5 (like Math.ceil)
_.ceil(6.004, 2); // => 6.01 (round up to 2 decimal places)
_.ceil(6040, -2); // => 6100 (round up to nearest 100)
_.floor(4.006); // => 4 (like Math.floor)
_.floor(0.046, 2); // => 0.04
_.floor(4060, -2); // => 4000
_.round(4.006); // => 4 (like Math.round)
_.round(4.006, 2); // => 4.01
_.round(4060, -2); // => 4100
const products = [
{ name: 'apple', price: 1.2 },
{ name: 'banana', price: 0.8 },
{ name: 'orange', price: 1.5 }
];
const mostExpensive = _.maxBy(products, 'price');
// => { name: 'orange', price: 1.5 }
const totalValue = _.sumBy(products, 'price');
// => 3.5

Lodash 的数学函数在处理集合或需要特定舍入精度时表现出色,提供了比潜在复杂的原生实现更清晰的替代方案。

请访问Lodash 官方数学文档查找完整列表。