![](/img/trans.png)
[英]how to merge array inside another array objects in one array in javascript
[英]How can I create an array of objects by extracting an array that is inside another array of objects in Javascript/Typescript?
我正在尝试基于另一个对象数组创建一个新数组,该对象数组的键中有另一个对象数组。 解释我自己。 我有以下接口:
export interface RouteElement{
component?: Type<any>;
path: string;
label: string;
data?:{ message?: string}
}
export interface RouterNodeElement{
label: string;
children: RouteElement[]
}
我有这个数组
routerNodes: [ { label: "NodeRoute", children: [ { path: 'child', label: 'child', data: { message: 'child' }}] } ]
所以基本上我有一个 routerNodes 数组,其中包含“Children”中的键,我想要的是提取所有“Children”并为每个 routerNodel 的每个孩子创建一个新数组,但我找不到扁平化该对象的方法.
const flatRouterNodes = this.routerNodes.map( route => {
return route.children.map( child => child);
});
我得到了什么
这是你要找的吗?
const routeNodes = [ { label: "NodeRoute", children: [ { path: 'child', label: 'child', data: { message: 'child' }}] }, { label: "R2", children: [ { path: 'child', label: 'child', data: { message: 'child' }}] } ]
routeNodes.reduce((acc, curr) => [...acc, ...curr.children], [])
// [
// { path: 'child', label: 'child', data: { message: 'child' } },
// { path: 'child', label: 'child', data: { message: 'child' } }
// ]
您还可以使用flatMap
:
routerNodes.flatMap((item) => item.children)
请注意, flatMap
在 IE 11 中不起作用,但似乎比reduce
性能更高( 请参阅 benchmark )。
您可以使用reduce
和forEach
let routerNodes = [ { label: "NodeRoute", children: [ { path: 'child', label: 'child', data: { message: 'child' }}] } ] let childerns = routerNodes.reduce((acc,curr)=>{ curr.children.forEach(child => acc.push(child)) return acc },[]) console.log(childerns)
let routerNodes = [{label: "NodeRoute",children: [{path: 'child',label: 'child',data: {message: 'child'}}]},{label: "NodeRoute2",children: [{path: 'child2',label: 'child2',data: {message: 'child2'}}]}] let childerns = routerNodes.flatMap(curr => curr.children) console.log(childerns)
您也可以使用 flatMap
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.