Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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
如何解析包含array1的object1、array1包含object2、object2包含array3等等。。使用typescript或javascript_Javascript_Json - Fatal编程技术网

如何解析包含array1的object1、array1包含object2、object2包含array3等等。。使用typescript或javascript

如何解析包含array1的object1、array1包含object2、object2包含array3等等。。使用typescript或javascript,javascript,json,Javascript,Json,我有一个json响应,如下所示。我想从所有级别的子级获取ID,以便将它们放入一个数组中,并进一步传递到复选框树中 { "status": "SUCCESS", "status_code": "200", "message": "Orgnization Hierarchy", "responseBody": { "dat

我有一个json响应,如下所示。我想从所有级别的子级获取ID,以便将它们放入一个数组中,并进一步传递到复选框树中

   {
  "status": "SUCCESS",
  "status_code": "200",
  "message": "Orgnization Hierarchy",
  "responseBody": {
    "data": {
      "id": "2",
      "parentId": "0",
      "value": "Company1",
      "children": [
        // this is level 1 object 1 
        {
          "id": "54",
          "parentId": "2",
          "value": "MasterCard",
          "children": [
            // this is level 2 of object 1
            {
              "id": "56",
              "parentId": "54",
              "value": "Branch bangalore",
              "children": [
                {
                  "id": "51",
                  "parentId": "56",
                  "value": "Area1",
                  "children": [
                     { id:"66", 
                      "parentId":"56", 
                       value: "Deposite dept.",
                       // this is level 3 of object 1 and so on..
                       "children": [...] // further expanded
                     }
                   ] 
                },
                // this is level 1 of object 2
                {
                   "id": "5",
                   "parentId": "54",
                   "value": "Branch pune",
                   "children": [...]
                }
              ]
            }
          ]
        },
       // level 1 object 2
        {
          "id": "74",
          "parentId": "2",
          "value": "Axis bank",
          "children": [...] // further expanded
        }
      ]
    }
  }
}
所以,如果我想从每一个级别的孩子身上获得id(在上面的例子中,比如2,54,56,51,66,…,5,…,74),我们如何才能做到这一点?有没有递归的方法或者没有递归的方法我们可以实现它

我处理了以下方法:

   var arrayOfids;
   function parsejson(){
   
    for(var i = 0; i < data.length; i++){
      var objectid = data[i].id
      var objchildren = data[i].children;
      getidfromchildren(objchildren);
    }
   }

   function getidfromchildren(arr){
     for(var j=0; j < arr.length; j++){
       arrayOfids.push(arr[i].id);
         
         if(arr[i].children.length != 0){
            getidfromchildren(arr);
         }
     }
   }
你可以拿到所有的身份证

这种方法假设所有子属性至少有一个空数组

如果不是,则需要一个数组,如

常数 getId={id,children}=>[id,…children.flatMapgetId], 数据={状态:成功,状态代码:200,消息:组织层次结构,响应主体:{数据:{id:2,父id:0,值:Company1,子:[{id:54,父id:2,值:万事达卡,子:[{id:56,父id:54,值:班加罗尔分行,子:[{id:51,父id:56,值:Area1,子:[{id:66,parentId:56,value:Deposite dept,children:[]}},{id:5,parentId:54,value:Branch pune,children:[]}}},{id:74,parentId:2,value:Axis bank,children:[]}}, ids=[data.ResponseBy.data].flatMapgetId;
console.logidsyes有一种递归方法,它实际上非常简单。你试过了吗?还没有,因为我不熟悉json和javascript,正在处理其他人的代码。你为什么不问问他们呢?没有联系。他们离开了公司。我不在同一家公司。顺便说一句,我编辑了我的问题并添加了我的工作方法。谢谢@Nina.works在javascript中很好,但在typescript中,ids=[data.ResponseBy.data].flatMapgetId;中存在错误:关于错误TS2339:类型“any[]”上不存在属性“flatmap”。
getId = ({ id, children = [] }) => [id, ...children.flatMap(getId)]
//                      ^^^^