Javascript 如何将数组对象推入另一个数组中?
我想匹配id和parentId并获取新对象Javascript 如何将数组对象推入另一个数组中?,javascript,typescript,ecmascript-6,Javascript,Typescript,Ecmascript 6,我想匹配id和parentId并获取新对象 { element: [ { data: { id: '1', parentId: 0, name: 'x' }, element: [ { data: { id: '2', parentId: 1, name: 'y' },
{
element: [
{
data: {
id: '1',
parentId: 0,
name: 'x'
},
element: [
{
data: {
id: '2',
parentId: 1,
name: 'y'
},
element: [
{
data: {
id: '3',
parentId: 2,
name: 'z'
},
element: [
{
data: {
id: '5',
parentId: 3,
name: 'e'
},
element: [
{
data: {
id: '6',
parentId: 5,
name: 'r'
},
element: [
]
}
]
}
]
},
{
data: {
id: '4',
parentId: 2,
name: 'q'
},
element: [
]
}
]
}
]
}
]
}
元素可以包含多个数据,并且必须根据id匹配进行嵌套
我找不到如何匹配,转换后可以搜索新列表吗
有可能实现这样的动态功能吗
我将在角度项目中使用此代码
第一阵列
[
{
id: '1',
parentId: 0,
name: 'x'
},
{
id: '2',
parentId: 1,
name: 'y'
},
{
id: '3',
parentId: 2,
name: 'z'
},
{
id: '4',
parentId: 2,
name: 'q'
},
{
id: '5',
parentId: 3,
name: 'e'
},
{
id: '6',
parentId: 5,
name: 'r'
}
]
新对象
{
element: [
{
data: {
id: '1',
parentId: 0,
name: 'x'
},
element: [
{
data: {
id: '2',
parentId: 1,
name: 'y'
},
element: [
{
data: {
id: '3',
parentId: 2,
name: 'z'
},
element: [
{
data: {
id: '5',
parentId: 3,
name: 'e'
},
element: [
{
data: {
id: '6',
parentId: 5,
name: 'r'
},
element: [
]
}
]
}
]
},
{
data: {
id: '4',
parentId: 2,
name: 'q'
},
element: [
]
}
]
}
]
}
]
}
在查找
数组中查找()。基本上,为搜索传递一个简单的表达式。我认为这就是您想要的。您可以使用lodash来实现这一点。抱歉,格式错误。问题结束了。无法作为答案发布function transformToTree(arr){var nodes={};返回arr.filter(function(obj){var id=obj[“id”],parentId=obj[“parentId”];nodes[id]=..defaults(obj,nodes[id],{element:[]});parentId&(nodes[parentId]=(nodes[parentId]|{element:[]])[“element”].push(obj);return!parentId;});}