问题描述
let recipe = [
{
Type:"AAAA",Total: 20
},{
Type:"BBBB",Total: 20,},{
Type:"AAAA",}
]
我想使用javascript(无库)获得最终形式,如下所示:
let finalRecipe = [["AAAA",60],["BBBB",40]]
我试图用这个但不能用
let recipeModified = recipe.reduce((r,timeoff) => {
const { Type,Total } = timeoff;
const totalSum = Object.values({
Total,}).reduce((acc,val) => ([...acc,...val],[]));
r[Type] = [...(r[Type] || []),totalSum];
return r;
},{})
https://codesandbox.io/s/cranky-ishizaka-i7m6v?file=/src/index.js
解决方法
您可以使用函数Array.prototype.reduce
通过Type
对对象进行分组,并使用函数Object.values
来提取分组的对象。
let recipe = [ { Type:"AAAA",Total: 20 },{ Type:"BBBB",Total: 20,},{ Type:"AAAA",}],result = Object.values(recipe.reduce((r,{Type,Total}) => {
(r[Type] || (r[Type] = [Type,0]))[1] += Total;
return r;
},{}));
console.log(result);