如何对两个键的最大值求和,object javascript
how to Sum the max from two keys similarly, object javascript
我需要对象的总和,其中,但是每个相似对的最大值
javascript
var score = {
"work_1": 5,
"work_1|pm": 10,
"work_2": 8,
"work_2|pm": 7
"work_3": 10
};
work_3没有一对相似
我希望这个结果
总计 = 28
您可以使用 Object.values
获取对象的 属性 值,对结果数组进行排序,然后对前两项求和:
var score = {
"work_1": 5,
"work_1|pm": 10,
"work_2": 8,
"work_2|pm": 7,
"work_3": 10
};
const max2 = Object.values(score).sort().splice(0, 2)
const result = max2[0] + max2[1];
console.log(result)
在新对象中按键前缀对最大值进行分组,然后对该对象的值求和。在这两个阶段,您都可以使用 reduce
:
var score = {
"work_1": 5,
"work_1|pm": 10,
"work_2": 8,
"work_2|pm": 7,
"work_3": 10
};
var result = Object.values(
Object.entries(score).reduce((acc, [k, v]) => {
k = k.split("|")[0];
acc[k] = Math.max(v, acc[k] ?? v);
return acc;
}, {})
).reduce((a, b) => a + b, 0);
console.log(result);
我需要对象的总和,其中,但是每个相似对的最大值 javascript
var score = {
"work_1": 5,
"work_1|pm": 10,
"work_2": 8,
"work_2|pm": 7
"work_3": 10
};
work_3没有一对相似 我希望这个结果
总计 = 28
您可以使用 Object.values
获取对象的 属性 值,对结果数组进行排序,然后对前两项求和:
var score = {
"work_1": 5,
"work_1|pm": 10,
"work_2": 8,
"work_2|pm": 7,
"work_3": 10
};
const max2 = Object.values(score).sort().splice(0, 2)
const result = max2[0] + max2[1];
console.log(result)
在新对象中按键前缀对最大值进行分组,然后对该对象的值求和。在这两个阶段,您都可以使用 reduce
:
var score = {
"work_1": 5,
"work_1|pm": 10,
"work_2": 8,
"work_2|pm": 7,
"work_3": 10
};
var result = Object.values(
Object.entries(score).reduce((acc, [k, v]) => {
k = k.split("|")[0];
acc[k] = Math.max(v, acc[k] ?? v);
return acc;
}, {})
).reduce((a, b) => a + b, 0);
console.log(result);