我有一个对象数组。在每个对象中,我都有“日期”键。如果 'date' 值与另一个对象匹配,我需要添加 'amount' 属性并使其成为一个新对象。
var obj = [
{
'date':'2017-02-08T00:00:00.000Z',
'amount': 20000
},{
'date':'2017-02-11T00:00:00.000Z',
'amount': 65989
},{
'date':'2017-02-08T00:00:00.000Z',
'amount': 256
},{
'date':'2017-02-08T00:00:00.000Z',
'amount': 269
},{
'date':'2017-02-11T00:00:00.000Z',
'amount': 900
},{
'date':'2017-02-11T00:00:00.000Z',
'amount': 6982.99
},{
'date':'2017-02-18T00:00:00.000Z',
'amount': 15248.09
},
];
Object.keys(obj).map(data1 =>{
Object.keys(obj).map(data2 =>{
if(obj[data]['date'] == obj[data2]['date']){
// i dont know what to do here.
}
});
})Run Code Online (Sandbox Code Playgroud)
我的预期输出应该是
[
{
'date':'2017-02-08T00:00:00.000Z',
'amount': 20525
},{
'date':'2017-02-11T00:00:00.000Z',
'amount': 73,871.99
},{
'date':'2017-02-18T00:00:00.000Z',
'amount': 15248.09
},
]
Run Code Online (Sandbox Code Playgroud)
请帮我解决它。提前致谢。
你可以使用
// use reducer
const all = obj.reduce( (prev, value) => (
{ ...prev, [value.date]: (prev[value.date] || 0) + value.amount } ), {});
console.log(totals);
// to array
console.log(
Object.entries(all).map( ([key, value]) => ( {date: key, amount: value} ) )
);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |