calc_sum
calc_sum 用于对数据数组进行聚合计算,是 v2.2.15 新增的方法。
基本签名
typescript
function calc_sum<Expr, Fmt, Err>(
expr: Expr,
dataArray: Array<object>
): string | number | Err参数
| 参数 | 类型 | 描述 |
|---|---|---|
| expr | string | 计算表达式,可包含格式化 |
| dataArray | Array | 数据对象数组 |
功能说明
calc_sum 会对数组中的每个对象执行表达式计算,然后将所有结果求和。
使用示例
基本用法
javascript
import { calc_sum } from 'a-calc'
const items = [
{ a: 1, b: 2 },
{ a: 3, b: 4 },
{ a: 5, b: 6 }
]
// 计算每项 a + b 的总和
calc_sum('a + b', items) // '21' (3 + 7 + 11)
// 带格式化
calc_sum('a + b | =2', items) // '21.00'订单金额汇总
javascript
import { calc_sum } from 'a-calc'
const orderItems = [
{ price: 99.9, quantity: 2 },
{ price: 49.9, quantity: 1 },
{ price: 29.9, quantity: 3 }
]
// 计算订单总金额
calc_sum('price * quantity | =2', orderItems)
// '339.40' (199.8 + 49.9 + 89.7)带千分位的汇总
javascript
import { calc_sum } from 'a-calc'
const sales = [
{ amount: 12345.67 },
{ amount: 23456.78 },
{ amount: 34567.89 }
]
calc_sum('amount | =2,', sales)
// '70,370.34'与手动计算对比
javascript
import { calc, calc_sum } from 'a-calc'
const items = [
{ price: 10, qty: 2 },
{ price: 20, qty: 3 },
{ price: 15, qty: 1 }
]
// 方式一:calc_sum(推荐)
const total1 = calc_sum('price * qty', items)
// 方式二:手动 reduce
const total2 = items.reduce((sum, item) => {
return calc(`${sum} + price * qty`, item)
}, '0')
// 两者结果相同,但 calc_sum 更简洁实际应用
购物车总价
javascript
import { calc_sum } from 'a-calc'
const cart = [
{ name: '商品A', price: 99.9, qty: 2, discount: 0.9 },
{ name: '商品B', price: 49.9, qty: 1, discount: 1 },
{ name: '商品C', price: 29.9, qty: 3, discount: 0.8 }
]
// 计算折后总价
const total = calc_sum('price * qty * discount | =2', cart)
// '251.64'统计报表
javascript
import { calc_sum } from 'a-calc'
const monthlyData = [
{ month: '1月', revenue: 100000, cost: 60000 },
{ month: '2月', revenue: 120000, cost: 70000 },
{ month: '3月', revenue: 150000, cost: 80000 }
]
// 计算总收入
const totalRevenue = calc_sum('revenue | ,', monthlyData)
// '370,000'
// 计算总利润
const totalProfit = calc_sum('revenue - cost | ,', monthlyData)
// '160,000'工资汇总
javascript
import { calc_sum } from 'a-calc'
const employees = [
{ name: '张三', base: 8000, bonus: 2000, deduction: 500 },
{ name: '李四', base: 10000, bonus: 3000, deduction: 800 },
{ name: '王五', base: 12000, bonus: 4000, deduction: 1000 }
]
// 计算实发工资总额
const totalSalary = calc_sum('base + bonus - deduction | =2,', employees)
// '36,700.00'注意事项
- 数组为空时返回 '0'
- 数组中某项计算失败会影响最终结果
- 格式化应用于最终求和结果,而非每个中间值
Ctrl+D 选择词, Ctrl+/ 注释