说我有一个医疗对象列表,我想在其中选择所有类别为“ MEDICATION”并且还具有“ Trait”的对象,“ 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" )
但是我该如何选择所有带有药物治疗的对象,以及带有名称===否定对象的特征?
嵌套数组使我失望。
谢谢!
答案 0 :(得分:3)
您仍然可以使用过滤器,但可以在子数组上使用一些过滤器
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);