如何获取连续数组对象的键的总和并删除重复项?
How to get the sum of a key of consecutive array object and remove the duplicates?
我有一个主数组-
const arr = [
{ description: 'Senior', amount: 50 },
{ description: 'Senior', amount: 50 },
{ description: 'Adult', amount: 75 },
{ description: 'Adult', amount: 35 },
{ description: 'Infant', amount: 25 },
{ description: 'Senior', amount: 150 }
]
我需要有关 es6 操作的帮助,该操作将根据键(描述)添加数量并删除重复项。
结果数组有点像 -
const newArr = [
{ description: 'Senior', amount: 100 },
{ description: 'Adult', amount: 110 },
{ description: 'Infant', amount: 25 },
{ description: 'Senior', amount: 150 }
]
请注意,分组只会对具有相似键的连续对象进行。
我一直在使用 reduce 运算符通过解决方案实现这一点,但这也删除了不连续的对象。
如果有人能帮我用一些 es6 运算符来执行相同的操作,那将非常有帮助。
这样
const arr =
[ { description: 'Senior', amount: 50 }
, { description: 'Senior', amount: 50 }
, { description: 'Adult', amount: 75 }
, { description: 'Adult', amount: 35 }
, { description: 'Infant', amount: 25 }
, { description: 'Senior', amount: 150 }
]
const newArr =
arr.reduce((res,{description,amount},i,{[i-1]:prev})=>
{
if (!prev || description != prev.description )
res.push({description,amount})
else
res[res.length-1].amount += amount
return res
},[])
console.log( newArr )
.as-console-wrapper {max-height: 100%!important;top:0 }
我有一个主数组-
const arr = [
{ description: 'Senior', amount: 50 },
{ description: 'Senior', amount: 50 },
{ description: 'Adult', amount: 75 },
{ description: 'Adult', amount: 35 },
{ description: 'Infant', amount: 25 },
{ description: 'Senior', amount: 150 }
]
我需要有关 es6 操作的帮助,该操作将根据键(描述)添加数量并删除重复项。
结果数组有点像 -
const newArr = [
{ description: 'Senior', amount: 100 },
{ description: 'Adult', amount: 110 },
{ description: 'Infant', amount: 25 },
{ description: 'Senior', amount: 150 }
]
请注意,分组只会对具有相似键的连续对象进行。
我一直在使用 reduce 运算符通过解决方案实现这一点,但这也删除了不连续的对象。
如果有人能帮我用一些 es6 运算符来执行相同的操作,那将非常有帮助。
这样
const arr =
[ { description: 'Senior', amount: 50 }
, { description: 'Senior', amount: 50 }
, { description: 'Adult', amount: 75 }
, { description: 'Adult', amount: 35 }
, { description: 'Infant', amount: 25 }
, { description: 'Senior', amount: 150 }
]
const newArr =
arr.reduce((res,{description,amount},i,{[i-1]:prev})=>
{
if (!prev || description != prev.description )
res.push({description,amount})
else
res[res.length-1].amount += amount
return res
},[])
console.log( newArr )
.as-console-wrapper {max-height: 100%!important;top:0 }