Javascript 如何使用递归函数将嵌套数组对象动态转换为平面表angularjs?
下面是嵌套数组对象示例。如何递归地将父元素追加到表的子元素 请注意:嵌套对象中可以有n个级别Javascript 如何使用递归函数将嵌套数组对象动态转换为平面表angularjs?,javascript,Javascript,下面是嵌套数组对象示例。如何递归地将父元素追加到表的子元素 请注意:嵌套对象中可以有n个级别 var data = { "grandparent_id": 7, "parents": [ { "parent_id": 65, "children": [ { "child_id": 365 } ] }, { "parent_id": 66,
var data = {
"grandparent_id": 7,
"parents": [
{
"parent_id": 65,
"children": [
{
"child_id": 365
}
]
},
{
"parent_id": 66,
"children": [
{
"child_id": 365
},
{
"child_id": 366
},
{
"child_id": 367,
"smallchildren": [
{
"smallchild_id": 465
},
{
"smallchild_id": 466
},
{
"smallchild_id": 467
}
]
}
]
}
]
}
预期产出:
var resultArray = [[7,65,365],[7,66,365],[7,66,366],[7,66,367]]
我试过这个:
function normalize(parent) {
if (parent && parent.children) {
for (var i = 0, l = parent.children.length; i < l; ++i) {
var child = parent.children[i];
child.index = i;
if (!child.parentId) child.parentId = parent.id || '0';
normalize(child);
}
}
}
函数规格化(父级){
if(父项和父项子项){
对于(变量i=0,l=parent.children.length;i
似乎是一项非常简单的映射/缩减工作。只需迭代父
数组,并将子
数组映射到数据数组中。祖父母id
,父.父id
和子.子id
const data={“祖父母id”:7,“父母”:[{“父母id”:65,“孩子”:[{“孩子id”:365}},{“父母id”:66,“孩子”:[{“孩子id”:365},{“孩子id”:366},{“孩子id”:367}}}
const resultArray=data.parents.reduce((arr,parent)=>{
返回arr.concat(parent.children.map(child=>
[data.grandparent\u id,parent.parent\u id,child.child\u id]))
}, [])
console.info('resultaray=',JSON.stringify(resultaray))
似乎是一个非常简单的映射/减少作业。只需迭代父
数组,并将子
数组映射到数据数组中。祖父母id
,父.父id
和子.子id
const data={“祖父母id”:7,“父母”:[{“父母id”:65,“孩子”:[{“孩子id”:365}},{“父母id”:66,“孩子”:[{“孩子id”:365},{“孩子id”:366},{“孩子id”:367}}}
const resultArray=data.parents.reduce((arr,parent)=>{
返回arr.concat(parent.children.map(child=>
[data.grandparent\u id,parent.parent\u id,child.child\u id]))
}, [])
console.info('resultArray=',JSON.stringify(resultArray))
您能将输入和预期输出作为JavaScript对象/数组文本发布吗?这将帮助人们帮助你。更新了预期的输入和输出。清理完成是的,这是一个输入错误。你可以将输入和预期的输出作为JavaScript对象/数组文本发布吗?这将帮助人们帮助你。更新预期的输入和输出。清理完成是的,这是一个输入错误。我们如何将其转换为数组对象?我们如何将其转换为数组对象?[{祖父母id:'7',父母id:'65',孩子id:'365'},{祖父母id:'7',父母id:'66',孩子id:'365'},{祖父母id:'7',父母id:'66',孩子id:'366'},{祖父母id:'7',父母id:'66',孩子id:'367'}感谢所有的帮助。如果有更深层的层次,这会起作用吗?比如说子数组有另一个嵌套数组。@user4101343不,它不是递归的。你能帮我做一个递归函数吗?我们怎样才能把它转换成数组的对象?我们怎样才能把它转换成数组的对象?[{祖父母id:'7',父母id:'65',孩子id:'365'},{祖父母id:'7',父母id:'66',孩子id:'365'},{祖父母id:'7',父母id:'66',孩子id:'366'},{祖父母id:'7',父母id:'66',孩子id:'367'}感谢所有的帮助。如果有更深层的层次,这会起作用吗?比如说子数组有另一个嵌套数组。@user4101343不,它不是递归的。你能帮我做一个递归函数吗?
function normalize(parent) {
if (parent && parent.children) {
for (var i = 0, l = parent.children.length; i < l; ++i) {
var child = parent.children[i];
child.index = i;
if (!child.parentId) child.parentId = parent.id || '0';
normalize(child);
}
}
}