const obj = {
M1:1,
M2:2,
M3:3,
P1:1,
P2:2,
P3:2,
P4:1
}
arr = [
{name:"M",value:6},
{name:"P",value:6}
]
###
转换规则没有描述清楚啊,arr 里面 value 6 哪里来的?
obj 里面也没有 6 啊
const arr = Object.entries(obj)
.reduce((arr, [key, value]) => {
const index = key.charCodeAt(0)
if (arr[index]) arr[index] += value
else arr[index] = value
return arr
}, [])
.map((value, index) => ({
name: String.fromCharCode(index),
value
}))
.filter(i => i)
###
每个人心中的"优雅“是不一样的,并且往往”优雅“的代码会降低代码的可读性。
var obj = {
M1:1,
M2:2,
M3:3,
P1:1,
P2:2,
P3:2,
P4:1
}
// Fist, group to {M: 6, P: 6}
var group = Object.keys(obj).reduce((group, key) => {
const groupKey = key.replace(/^([a-z]+)\d+/i, '$1');
group[groupKey] = obj[key] + (group[groupKey] || 0);
return group;
}, {});
// Finally
var result = Object.keys(group).map(name => ({name, value: result[name]}))
console.log(result)
###const arr = keys(obj).map((item)=>({name:item, value:obj[item]}))