繁体   English   中英

嵌套对象数组上的 Javascript reduce 和 map

[英]Javascript reduce and map on nested array of objects

我有一组对象

[
  {
    "country": "USA",
    "payment": [
      {
        "paymentType": "Visa",
        "count": 1000
      },
      {
        "paymentType": "MasterCard",
        "count": 1000
      }
    ]
  },
  {
    "country": "CANADA",
    "payment": [
      {
        "paymentType": "Visa",
        "count": 1000
      },
      {
        "paymentType": "MasterCard",
        "count": 1000
      }
    ]
  },
  {...}
]

我想把它改造成

[
["USA" , "VISA" , 10000 ], 
["USA","Mastercard",1000],
[countryName2, paymentType,count] , ...
]

有人可以帮我吗>?

我试着做:

const data2 = data.map(function(elem) {
  return [
    elem.country,
    elem.payment.map(b=> b.paymentType),
    elem.payment.map(c=>c.count),
  ]
})

但是我得到的 output 不是我想要的,如果有人可以展示如何去做,

您可以使用嵌套的 map 执行此操作,其中每个数组条目都是通过从前缀为 outer countrypayment中提取数据来创建的。

 const data = [{"country":"USA","payment":[{"paymentType":"Visa","count":1000},{"paymentType":"MasterCard","count":1000}]},{"country":"CANADA","payment":[{"paymentType":"Visa","count":1000},{"paymentType":"MasterCard","count":1000}]}]; const data2 = data.flatMap(({ country, payment }) => payment.map(({ paymentType, count }) => [ country, paymentType, count ]) ); console.log(data2);
 .as-console-wrapper { max-height: 100%;important; }

外部 map 上的flatMap()删除了在结果中创建的额外嵌套级别。

您可以使用平面阵列 function。这里:

const data2 = data
  .map(state => state.payment.map(statePayment => [state.country, statePayment.paymentType, statePayment.count]))
  .flat();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM