【问题标题】:"Clean" an array inside another array of objects in JavaScript在 JavaScript 中“清理”另一个对象数组中的数组
【发布时间】:2021-09-27 10:23:53
【问题描述】:

我目前正在努力完成一项任务,希望有人能指导我正确的方向。

我有这个数组:

const data = [
{
  year: 2021,
  data: [
    { month: 'Jan', amount: 5000000 },
    { month: 'Feb', amount: 3500000 },
    { month: 'Mar', amount: 15000000 },
    { month: 'Apr', amount: 5000000},
    { month: 'May', amount: 3500000 },
    { month: 'Jun', amount: 15000000 },
    { month: 'Jul', amount: 13000000 },
    { month: 'Aug', amount: 20000000 }
  ]
},
{
  year: 2020,
  data: [
    { month: 'Jan', amount: 5000000 },
    { month: 'Feb', amount: 3500000 },
    { month: 'Mar', amount: 15000000 },
    { month: 'Apr', amount: 5000000},
    { month: 'May', amount: 3500000 },
    { month: 'Jun', amount: 15000000 },
    { month: 'Jul', amount: 13000000 },
    { month: 'Aug', amount: 20000000 }
  ]
}

]

我正在尝试清理它,以便可以使用 HighCharts JS,它需要以下结构:

const data = [
  { year: '2021',
    data: [5000000, 3500000, 15000000, 5000000, 3500000, 15000000, 13000000, 20000000 ]
  },
  { year: '2020',
    data: [5000000, 3500000, 15000000, 5000000, 3500000, 15000000, 13000000, 20000000 ]
  }
]

所以基本上,就是清理每个对象内部的数据数组,只获取没有月份名称的金额值。我尝试制作地图并将结果存储在 useState(我正在使用 React JS)中,但没有成功。

任何想法都将受到高度赞赏。

【问题讨论】:

    标签: javascript reactjs ecmascript-6


    【解决方案1】:

    试试这个:

    data.map(({ year, data: innerData }) => ({
       year,
       data: innerData.map(({ amount }) => amount)
    }))
    

    【讨论】:

    • 这正是我所需要的,而且非常容易阅读。非常感谢!
    【解决方案2】:

    您可以映射每个对象并将数据数组替换为 {...} spread 内的映射数据数组

    const data = [
    {
      year: 2021,
      data: [
        { month: 'Jan', amount: 5000000 },
        { month: 'Feb', amount: 3500000 },
        { month: 'Mar', amount: 15000000 },
        { month: 'Apr', amount: 5000000},
        { month: 'May', amount: 3500000 },
        { month: 'Jun', amount: 15000000 },
        { month: 'Jul', amount: 13000000 },
        { month: 'Aug', amount: 20000000 }
      ]
    },
    {
      year: 2020,
      data: [
        { month: 'Jan', amount: 5000000 },
        { month: 'Feb', amount: 3500000 },
        { month: 'Mar', amount: 15000000 },
        { month: 'Apr', amount: 5000000},
        { month: 'May', amount: 3500000 },
        { month: 'Jun', amount: 15000000 },
        { month: 'Jul', amount: 13000000 },
        { month: 'Aug', amount: 20000000 }
      ]
    }]
    
    const newdata = data.map(e=> ({...e, data: e.data.map(x=>x.amount)}))
    console.log(newdata)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 2018-11-23
      • 2018-04-04
      相关资源
      最近更新 更多