微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将嵌套对象数组转换为对象数组的最佳方法

如何解决将嵌套对象数组转换为对象数组的最佳方法

const data = [
  {
    'UTMEH5': {
      descr: {
        ordertype: 'limit',pair: 'XBT/USD',price: '5000.00000',},status: 'open',vol: '0.00200000',{
    '3F2TYE': {
      descr: {
        ordertype: 'limit',price: '10000.00000'
      },]

const orders = data.map((order) => {
          return Object.entries(order).map(([key,value]) => ({
            orderid: key,pair: value['descr']['pair'],vol: value['vol'],price: value['descr']['price'],ordertype: value['descr']['ordertype'],status: value['status'],}))})
          
 console.log(orders)

通过上面的代码,我得到了这个:

[
  [
    {
      "orderid": "UTMEH5","pair": "XBT/USD","vol": "0.00200000","price": "5000.00000","ordertype": "limit","status": "open"
    }
  ],[
    {
      "orderid": "3F2TYE","price": "10000.00000","status": "open"
    }
  ]
]

但我想要这个:

[
    {
      "orderid": "UTMEH5","status": "open"
    },{
      "orderid": "3F2TYE","status": "open"
    }
]

对于重复的建议,我似乎可以使用 .flat(),但这似乎是获得我想要的东西的迂回方式。有没有更好更直接的方法

解决方法

对于这种情况,您可以使用 flatMap() 代替 map()

const data = [{
    'UTMEH5': {
      descr: {
        ordertype: 'limit',pair: 'XBT/USD',price: '5000.00000',},status: 'open',vol: '0.00200000',{
    '3F2TYE': {
      descr: {
        ordertype: 'limit',price: '10000.00000'
      },]

const orders = data.flatMap((order) => Object.entries(order).map(([key,value]) => ({
  orderid: key,vol: value['vol'],status: value['status'],...value['descr'],// you can use spread operator here for brevity as well
})))

console.log(orders)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。