[英]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.