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