简体   繁体   English

JS中如何处理二维数组转换为一维数组

[英]How to handle Two-dimensional Array convert into One-dimensional Array in JS

I got the Array like the below:我得到了如下所示的数组:

[
  {
    companyId: 'TW0826',
    modules: [
      {
        name: 'Module A',
        condition: true,
      },
      {
        name: 'Module B',
        condition: false,
      },
      {
        name: 'Module C',
        condition: true,
      },
    ],
  },
  {
    companyId: 'TXT777',
    modules: [
      {
        name: 'Module B',
        condition: true,
      },
      {
        name: 'Module C',
        condition: false,
      },
      {
        name: 'Module D',
        condition: false,
      },
    ],
  },
];

But I want to make it like:但我想让它像:

[
  {companyId:'TW0826', name:'Module A', condition:ture},
  {companyId:'TW0826',name:'Module B', condition:false},
  {companyId:'TXT777',name:'Module B',condition:ture},
  {companyId:'TXT777',name:'Module C',condition:false}....
]

So what I can do to reach the above result.那么我可以做些什么来达到上述结果。 Thanks a lot.非常感谢。

You can use .flatMap() with an inner .map() and destructuring assignment to convert your nested module arrays into individual objects like so:您可以将.flatMap()与内部.map()解构赋值一起使用,将嵌套的模块数组转换为单个对象,如下所示:

 const data = [{companyId: 'TW0826', modules: [ { name: 'Module A', condition: true, }, { name: 'Module B', condition: false, }, { name: 'Module C', condition: true, }, ], }, { companyId: 'TXT777', modules: [ { name: 'Module B', condition: true, }, { name: 'Module C', condition: false, }, { name: 'Module D', condition: false, }, ], }, ]; const res = data.flatMap( ({companyId, modules}) => modules.map(({name, condition}) => ({companyId, name, condition})) ); console.log(res);
 .as-console-wrapper { max-height: 100% !important;} /* ignore */

.flatMap() does have limited browser support, so you can use .reduce() if you need something more browser compatible: .flatMap()确实有有限的浏览器支持,所以如果你需要更多浏览器兼容的东西,你可以使用.reduce()

 const data = [{companyId: 'TW0826', modules: [ { name: 'Module A', condition: true, }, { name: 'Module B', condition: false, }, { name: 'Module C', condition: true, }, ], }, { companyId: 'TXT777', modules: [ { name: 'Module B', condition: true, }, { name: 'Module C', condition: false, }, { name: 'Module D', condition: false, }, ], }, ]; const res = data.reduce( (acc, {companyId, modules}) => [...acc, ...modules.map(({name, condition}) => ({companyId, name, condition}))], [] ); console.log(res);
 .as-console-wrapper { max-height: 100% !important;} /* ignore */

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

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