Javascript 无法筛选嵌套的json对象
我想根据GUI中的用户输入,使用procedureName&hospitalName过滤下面的json数据Javascript 无法筛选嵌套的json对象,javascript,node.js,Javascript,Node.js,我想根据GUI中的用户输入,使用procedureName&hospitalName过滤下面的json数据 myObject= [ { "department": "Gynic", "treatmentList": [ { "procedureName": "Bone Grafting", "hospitalList": [
myObject= [
{
"department": "Gynic",
"treatmentList": [
{
"procedureName": "Bone Grafting",
"hospitalList": [
{
"hospitalName": "Renai",
},
{
"hospitalName": "Aster",
},
{
"hospitalName": "Appolo",
}
],
},
{
"procedureName": "IVF",
"hospitalList": [
{
"hospitalName": "Renai",
}
],
}
]
}
]
例如,当上面的json使用程序名“Bone Grafting”和医院名“Renai”进行过滤时,我应该得到以下格式的结果
[
{
"department": "Gynic",
"treatmentList": [
{
"procedureName": "Bone Grafting",
"hospitalList": [
{
"hospitalName": "Renai",
},
{
"hospitalName": "Aster",
},
{
"hospitalName": "Appolo",
}
],
}
]
}
]
我尝试了下面的代码,但它没有过滤json
var x = myObject.filter(function (obj) {
return obj.treatmentList.some(function (item) {
return item.procedureName == 'Bone Grafting';
});
});
有人能帮我纠正代码中的错误吗?不确定这是否是最好的方法,但您可以尝试类似的方法 变量myObject=[{ 部门:妇科, 治疗清单:[{ 程序名称:骨移植, 住院医生:[{ 医院名称:Renai, }, { 医院名称:阿斯特, }, { 医院名称:阿波洛, }], }, { 程序名称:体外受精, 住院医生:[{ 医院名称:Renai, }], }] }]; 函数searchprocedureName,hospitalName{ 返回myObject[0]。treatmentList.filtere=>{ 如果e.procedureName===procedureName{ 返回e.hospitalList.filter=>{ 返回h.hospitalName===hospitalName } } } } console.logsearchIVF,RenaiArray。有些人只需要数组中至少一个元素就可以通过测试。因此filter方法返回true,不过滤任何内容 以下方法可以满足您的需求
var x = myObject.map(function (obj) {
obj.treatmentList = obj.treatmentList.filter(function (item) {
return item.procedureName == 'Bone Grafting' &&
item.hospitalList.some(function (hospital) {
return hospital.hospitalName == 'Renai';
});
});
return obj;
});
观察
您需要在myObject数组上循环。
为hospitalList数组添加某个函数的新调用,并与hospitalNameattribute进行比较。
最后将找到的匹配项添加到treatmentList数组中。
变量myObject=[{
部门:妇科,
治疗清单:[{
程序名称:骨移植,
住院医生:[{
医院名称:Renai,
},
{
医院名称:阿斯特,
},
{
医院名称:阿波洛,
}
],
},
{
程序名称:体外受精,
住院医生:[{
医院名称:Renai,
}],
}
]
}];
var myResultObject=[];
对于var i=0;i