簡體   English   中英

在多層對象數組上使用過濾器?

[英]Use filter on a a multi level object array?

假設我有一個醫療對象列表,我想在其中選擇所有類別為“ 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" )

但是,我該如何選擇所有帶有葯物的對象,以及帶有名稱===否定的對象的特征?

嵌套數組讓我失望。

謝謝!

您仍然可以使用過濾器,但在子數組上使用一些過濾器

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); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM