🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
28 lines
650 B
JavaScript
Executable File
28 lines
650 B
JavaScript
Executable File
'use strict';
|
|
|
|
const values = require('../helpers/values');
|
|
const { isFunction } = require('../helpers/is');
|
|
|
|
module.exports = function sum(key) {
|
|
const items = values(this.items);
|
|
|
|
let total = 0;
|
|
|
|
if (key === undefined) {
|
|
for (let i = 0, { length } = items; i < length; i += 1) {
|
|
total += parseFloat(items[i]);
|
|
}
|
|
} else if (isFunction(key)) {
|
|
for (let i = 0, { length } = items; i < length; i += 1) {
|
|
total += parseFloat(key(items[i]));
|
|
}
|
|
} else {
|
|
for (let i = 0, { length } = items; i < length; i += 1) {
|
|
total += parseFloat(items[i][key]);
|
|
}
|
|
}
|
|
|
|
|
|
return parseFloat(total.toPrecision(12));
|
|
};
|