我觉得这是一个非常简单的答案,但我很难弄明白。
我想把这个对象数组:
[{
client: 'lalala@email.com',
amount: 0,
date: '2018-12'
},
{
client: 'lalala@email.com',
amount: '30',
date: '2018-11'
}, {
client: 'lalala@email.com',
amount: '5',
date: '2018-10'
}]如下所示:
[{
client: 'lalala@email.com',
'2018-12': 0,
'2018-11': '30',
'2018-10': '5'
}]我一直在尝试着使用reduce()函数,但是没有得到任何结果。
感谢您能抽出时间来。
发布于 2018-12-30 10:07:01
reduce是正确的方法-以下是如何做到这一点:
const data = [{
client: 'lalala@email.com',
amount: 0,
date: '2018-12'
},
{
client: 'lalala@email.com',
amount: '30',
date: '2018-11'
}, {
client: 'lalala@email.com',
amount: '5',
date: '2018-10'
}]
const result = data.reduce((memo, {client, date, amount}) => {
memo.client = client;
memo[date] = amount;
return memo;
}, {});
console.log(result)
发布于 2018-12-30 10:12:18
使用Array.prototype.reduce,这将会起作用:
const a = [{
client: 'lalala@email.com',
amount: 0,
date: '2018-12'
}, {
client: 'lalala@email.com',
amount: '30',
date: '2018-11'
}, {
client: 'lalala@email.com',
amount: '5',
date: '2018-10'
}]
const b = a.reduce((acc, {date, amount}) => {
return { ...acc, [date]: amount }
}, { client: a[0].client })
console.log([b])
发布于 2018-12-30 10:12:47
因为客户机始终是相同的,所以可以在reduce()中很好地使用Object.assign
const data = [{client: 'lalala@email.com',amount: 0,date: '2018-12'},{client: 'lalala@email.com',amount: '30',date: '2018-11'}, {client: 'lalala@email.com',amount: '5',date: '2018-10'}]
const result = data.reduce((obj, {client, date, amount}) =>
Object.assign(obj, {client, [date]:amount}), {});
console.log([result])
https://stackoverflow.com/questions/53974773
复制相似问题