fenzhi-utils
Version:
分值前端项目的js函数库
37 lines (34 loc) • 979 B
JavaScript
/**
* 数组求和(根据某个字段求和)
* @param {array} arr 求和的数组
* @returns {number}
*/
/**
let arr_1 = [{ a: 1 }, { a: 2 }, { a: 3 }, { a: 4 }, { a: 5 }];
CustomArraySumField(arr_1, 'a'); // 15
let arr_2 = [
{ a: 1 },
{ a: null },
{ a: '' },
{ a: '1' },
{ a: undefined },
{ a: Infinity },
];
CustomArraySumField(arr_2,'a');// 2
*/
export function CustomArraySumField(arr = [], field) {
if (!arr.length) return 0;
if ([0, 1].includes(arguments.length)) return 0;
return arr.reduce((pre, item) => {
let curNum = 0;
if (
[null, 'null', '', 'undefined', undefined, Infinity].includes(item[field])
)
curNum = 0;
else if (typeof item[field] === 'number') curNum = item[field];
else if (typeof item[field] === 'string')
curNum = parseInt(item[field], 10);
else if (typeof item[field] === 'boolean') curNum = item[field] ? 1 : 0;
return pre + curNum;
}, 0);
}