如何将对象的 javascript 数组从一种格式排列到另一种格式



我觉得这是一个非常简单的答案,但我很难弄清楚。

我想转动这个对象数组:

[{
    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() 函数,但没有接近。

感谢您抽出宝贵时间。

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)

由于客户端将始终相同,因此您可以在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])

使用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])

相关内容

最新更新