对多级对象数组使用筛选器



假设我有一个医疗对象列表,我想在其中选择所有类别为"MEDICATION"并且还有一个"Trait"的对象,这是一个对象数组,特别是术语"NEGATION"。例如:

[ 
{ 
Score: 0.9978850483894348,
Text: 'prozac',
Category: 'MEDICATION',
Type: 'BRAND_NAME',
Traits: [
{ 
Name: "SIGN"
},
{ 
Name: "NEGATION"
}
] 
},
{ 
Text: "pulmonary embolism",
Category: "MEDICAL_CONDITION",
Type: "DX_NAME",
Traits: [
{
Name: "DIAGNOSIS",
Score: 0.9635574817657471
} ]

通常情况下,对于过滤器,我可以很容易地选择所有药物对象:

Object.filter( obj => obj.Category === "MEDICATION" )

但是,我如何选择所有带有"药物"的对象,以及带有名称===为"阴性"的对象的Trait?

嵌套数组让我大吃一惊。

谢谢!

您仍然可以使用过滤器,但在子阵列上使用一些过滤器

Object.filter(obj => obj.Traits.some(t => t.Name === 'NEGATION'));

const values = [
{
Score: 0.9978850483894348,
Text: 'prozac',
Category: 'MEDICATION',
Type: 'BRAND_NAME',
Traits: [
{
Name: 'SIGN'
},
{
Name: 'NEGATION'
}
]
},
{
Text: 'pulmonary embolism',
Category: 'MEDICAL_CONDITION',
Type: 'DX_NAME',
Traits: [
{
Name: 'DIAGNOSIS',
Score: 0.9635574817657471
}
]
}
].filter(obj => obj.Category === 'MEDICATION' && obj.Traits.some(t => t.Name === 'NEGATION'));
console.log(values);

最新更新