Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在多级对象阵列上使用过滤器?_Javascript_Multidimensional Array - Fatal编程技术网

Javascript 在多级对象阵列上使用过滤器?

Javascript 在多级对象阵列上使用过滤器?,javascript,multidimensional-array,Javascript,Multidimensional Array,假设我有一个医疗对象列表,其中我想选择所有具有“药物”类别和“特征”的对象,即一系列对象,特别是术语“否定”。例如: [ { Score: 0.9978850483894348, Text: 'prozac', Category: 'MEDICATION', Type: 'BRAND_NAME', Traits: [ { Name: "SIGN" }, { Name: "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值=[
{
得分:0.9978850483894348,
文本:“百忧解”,
类别:"药物",,
类型:“品牌名称”,
特点:[
{
姓名:“签名”
},
{
名称:“否定”
}
]
},
{
正文:“肺栓塞”,
类别:“医疗状况”,
键入:“DX_名称”,
特点:[
{
名称:'诊断',
分数:0.9635574817657471
}
]
}
].filter(obj=>obj.Category=='medicing'&&obj.Traits.some(t=>t.Name=='NEGATION');

console.log(值)您仍然可以使用过滤器,但可以在子阵列上使用一些过滤器

Object.filter(obj => obj.Traits.some(t => t.Name === 'NEGATION'));
const值=[
{
得分:0.9978850483894348,
文本:“百忧解”,
类别:"药物",,
类型:“品牌名称”,
特点:[
{
姓名:“签名”
},
{
名称:“否定”
}
]
},
{
正文:“肺栓塞”,
类别:“医疗状况”,
键入:“DX_名称”,
特点:[
{
名称:'诊断',
分数:0.9635574817657471
}
]
}
].filter(obj=>obj.Category=='medicing'&&obj.Traits.some(t=>t.Name=='NEGATION');

console.log(值)使用
some
而不是
find
可能在语义上更正确更改为使用some而不是find使用
some
而不是
find
可能在语义上更正确更改为使用some而不是find