通过数组中的对象键求和,但总和在函数 JavaScript loadsh 中只有单词提供



>我正在尝试按对象键从数组求和,但键需要按提供的单词过滤然后求和,但我不知道如何求和任何一个可以帮我

sum 对象值只有 key.include('_total'(,而没有 key.include('all_total'(和 key.include('cf_total'(

let array = [{
"46": 0,
"1592_46_1": 3,
"1592_46_2": 3,
"1592_46_3": 3,
"1592_46_1_total": 3,
"1592_46_1_cf_total": 3,
"1592_46_2_total": 3,
"1592_46_2_cf_total": 3,
"1592_46_3_total": 3,
"1592_46_3_cf_total": 3,
"all_total": 3,
"cf_total": 3,
},
{
"46": 0,
"1593_46_1": 1,
"1593_46_2": 1,
"1593_46_3": 1,
"1593_46_1_total": 1,
"1593_46_1_cf_total": 1,
"1593_46_2_total": 1,
"1593_46_2_cf_total": 1,
"1593_46_3_total": 1,
"1593_46_3_cf_total": 1,
"all_total": 1,
"cf_total": 1,
},
{
"46": 0,
"1594_46_1": 2,
"1594_46_2": 2,
"1594_46_3": 2,
"1594_46_1_total": 2,
"1594_46_1_cf_total": 2,
"1594_46_2_total": 2,
"1594_46_2_cf_total": 2,
"1594_46_3_total": 2,
"1594_46_3_cf_total": 2,
"all_total": 2,
"cf_total": 2,
},
];

我的函数是

let sum = (word) => {
return _.sumBy(array, function(o)
{
return o.n;
});
};

示例 sum 仅值该键包含_total单词,但不包括单词 cf_total 和 all_total

sum('_total');
return should number 18

您可以使用reduce,并使用正则表达式检查每个键中是否包含一个数字,后跟您的单词(以避免cf_totalall_total(:

// Minified for readability
const array = [{46:0,"1592_46_1":3,"1592_46_2":3,"1592_46_3":3,"1592_46_1_total":3,"1592_46_1_cf_total":3,"1592_46_2_total":3,"1592_46_2_cf_total":3,"1592_46_3_total":3,"1592_46_3_cf_total":3,all_total:3,cf_total:3},{46:0,"1593_46_1":1,"1593_46_2":1,"1593_46_3":1,"1593_46_1_total":1,"1593_46_1_cf_total":1,"1593_46_2_total":1,"1593_46_2_cf_total":1,"1593_46_3_total":1,"1593_46_3_cf_total":1,all_total:1,cf_total:1},{46:0,"1594_46_1":2,"1594_46_2":2,"1594_46_3":2,"1594_46_1_total":2,"1594_46_1_cf_total":2,"1594_46_2_total":2,"1594_46_2_cf_total":2,"1594_46_3_total":2,"1594_46_3_cf_total":2,all_total:2,cf_total:2}];
const sum = (word, arr) => {
const regex = new RegExp(`\d${word}`);

return arr.reduce((total, obj) => {
return total + Object.entries(obj).reduce((sum, [k, v]) => {
return sum + (regex.test(k) ? v : 0);
}, 0);
}, 0);
};
const res = sum('_total', array);
console.log(res); // 18

最新更新