Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用递归函数将嵌套数组对象动态转换为平面表angularjs?_Javascript - Fatal编程技术网

Javascript 如何使用递归函数将嵌套数组对象动态转换为平面表angularjs?

Javascript 如何使用递归函数将嵌套数组对象动态转换为平面表angularjs?,javascript,Javascript,下面是嵌套数组对象示例。如何递归地将父元素追加到表的子元素 请注意:嵌套对象中可以有n个级别 var data = { "grandparent_id": 7, "parents": [ { "parent_id": 65, "children": [ { "child_id": 365 } ] }, { "parent_id": 66,

下面是嵌套数组对象示例。如何递归地将父元素追加到表的子元素

请注意:嵌套对象中可以有n个级别

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);
        }
    }
}