Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays_Object_Ecmascript 6_Filter - Fatal编程技术网

Javascript 对象数组过滤并获取另一个结构中的值

Javascript 对象数组过滤并获取另一个结构中的值,javascript,arrays,object,ecmascript-6,filter,Javascript,Arrays,Object,Ecmascript 6,Filter,我将数据作为对象数组,我应该过滤数据并获取对象和具有值的最小键,我尝试过使用循环和过滤器,但无法获得预期的结果。我已经分享了我的数据和预期的结构,找到下面的代码,请帮助我 我有以下资料: var data = [ { "Id": 1392236, "foldId": 410176, "binding": [ { "assayType": "bindin

我将数据作为对象数组,我应该过滤数据并获取对象和具有值的最小键,我尝试过使用循环和过滤器,但无法获得预期的结果。我已经分享了我的数据和预期的结构,找到下面的代码,请帮助我

我有以下资料:

var data = [
  {
    "Id": 1392236,
    "foldId": 410176,
    "binding": [
      {
        "assayType": "binding",
        "activityValue": 0.03,
        "strId": 1392236
      },
      {
        "assayType": "binding",
        "activityValue": 5.0,
        "strId": 1392236
      }
    ],
    "functional invitro": [
      {
        "assayType": "functional invitro",
        "activityValue": 0.03,
        "strId": 1392236
      },
      {
        "assayType": "functional invitro",
        "activityValue": 5.0,
        "strId": 1392236
      },
      
    ],
    "functionalInvivo": [
      {
        "assayType": "functional invivo",
        "activityValue": 45.0,
        "strId": 1392236
      },
      {
        "assayType": "functional invivo",
        "activityValue": 54.0,
        "strId": 1392236
      }
    ],
    "pharmacokinetics": [
      {
        "assayType": "pharmacokinetics",
        "activityValue": 10.67,
        "strId": 1392236
      },
      {
        "assayType": "pharmacokinetics",
        "activityValue": 2.6,
        "strId": 1392236
      }          
    ]
  },
  {
    "Id": 1392543,
    "foldId": 410176,
    "binding": [
      {
        "assayType": "binding",
        "activityValue": 0.38,
        "strId": 1392543
      },
      {
        "assayType": "binding",
        "activityValue": 4.3,
        "strId": 1392543
      }
      
    ],
    "functional invitro": [
      {
        "assayType": "functional invitro",
        "activityValue": 2.03,
        "strId": 1392543
      },
      {
        "assayType": "functional invitro",
        "activityValue": 3.0,
        "strId": 1392543
      },
      
    ],
    "functionalInvivo": [
      {
        "assayType": "functional invivo",
        "activityValue": 25.0,
        "strId": 1392543
      },
      {
        "assayType": "functional invivo",
        "activityValue": 64.0,
        "strId": 1392543
      }
    ],
    "pharmacokinetics": [
      {
        "assayType": "pharmacokinetics",
        "activityValue": 30.67,
        "strId": 1392543
      },
      {
        "assayType": "pharmacokinetics",
        "activityValue": 5.6,
        "strId": 1392543
      }          
    ]
  }
]
我希望在进行如下筛选后:

var filterData = [
  {
      "assayType": "binding",
      "activityValue": 0.03,
      "strId": 1392543
  },
  {
      "assayType": "functional invitro",
      "activityValue": 5.0,
      "strId": 1392543
  },
  {
      "assayType": "binding",
      "activityValue": 4.3,
      "strId": 1392236
  },
  {
      "assayType": "pharmacokinetics",
      "activityValue": 6.06,
      "strId": 1392543
  },
  {
      "assayType": "functional invivo",
      "activityValue": 64,
      "strId": 1392543
  },
  {
      "assayType": "functional invivo",
      "activityValue": 4,
      "strId": 1392236
  },
  {
      "assayType": "pharmacokinetics",
      "activityValue": 6.06,
      "strId": 1392236
  },
]
请帮助我解决问题。

您可以使用,以及解决此问题的方法

data.map((item) => {
  return Object.keys(item).filter(key=> item[key].length).map((key) => item[key]).flat()
}).flat()
如果您需要进一步过滤数据,可以在平面阵列上进行过滤。

您可以使用

data.map((item) => {
  return Object.keys(item).filter(key=> item[key].length).map((key) => item[key]).flat()
}).flat()

如果需要进一步过滤数据,可以在平面阵列上进行过滤。

可以从对象中获取一些不需要的属性,并迭代值以映射最小的属性

const
数据=[{Id:1392236,foldId:410176,binding:[{assayType:“binding”,activityValue:0.03,strId:1392236},{assayType:“binding”,activityValue:5,strId:1392236}],“functional invitro”:[{assayType:“functional invitro”,activityValue:0.03,strId:1392236},{assayType:“functional invitro”,activityValue:5,strId:1392236}],FunctionalInvo:[{分析类型:“functionalInvivo”,活性值:45,strId:1392236},{分析类型:“functionalInvivo”,活性值:54,strId:1392236}],药代动力学:[{分析类型:“药代动力学”,活性值:10.67,strId:1392236},{分析类型:“药代动力学”,活性值:2.6,strId:1392236},{Id:1392543,foldId:410176,binding:[{analytype:“binding”,activityValue:0.38,strId:1392543},{analytype:“binding”,activityValue:4.3,strId:1392543}],“functional invitro”:[{analytype:“functional invitro”,activityValue:2.03,strId:1392543},{analytype:“functional invitro”,activityValue:3,strId:1392543}],FunctionalInvo:[{分析类型:“functionalInvivo”,活性值:25,strId:1392543},{分析类型:“functionalInvivo”,活性值:64,strId:1392543}],药代动力学:[{分析类型:“药代动力学”,活性值:30.67,strId:1392543},{分析类型:“药代动力学”,活性值:5.6,strId:1392543}],
结果=data.flatMap({Id,foldId,…o})=>
Object.values(o.map)(数组=>
数组.reduce((a,b)=>a.activityValue

.as console wrapper{max height:100%!important;top:0;}
您可以从对象中获取一些不需要的属性,并迭代这些值以映射最小的属性

const
数据=[{Id:1392236,foldId:410176,binding:[{assayType:“binding”,activityValue:0.03,strId:1392236},{assayType:“binding”,activityValue:5,strId:1392236}],“functional invitro”:[{assayType:“functional invitro”,activityValue:0.03,strId:1392236},{assayType:“functional invitro”,activityValue:5,strId:1392236}],FunctionalInvo:[{分析类型:“functionalInvivo”,活性值:45,strId:1392236},{分析类型:“functionalInvivo”,活性值:54,strId:1392236}],药代动力学:[{分析类型:“药代动力学”,活性值:10.67,strId:1392236},{分析类型:“药代动力学”,活性值:2.6,strId:1392236},{Id:1392543,foldId:410176,binding:[{analytype:“binding”,activityValue:0.38,strId:1392543},{analytype:“binding”,activityValue:4.3,strId:1392543}],“functional invitro”:[{analytype:“functional invitro”,activityValue:2.03,strId:1392543},{analytype:“functional invitro”,activityValue:3,strId:1392543}],FunctionalInvo:[{分析类型:“functionalInvivo”,活性值:25,strId:1392543},{分析类型:“functionalInvivo”,活性值:64,strId:1392543}],药代动力学:[{分析类型:“药代动力学”,活性值:30.67,strId:1392543},{分析类型:“药代动力学”,活性值:5.6,strId:1392543}],
结果=data.flatMap({Id,foldId,…o})=>
Object.values(o.map)(数组=>
数组.reduce((a,b)=>a.activityValue

.as控制台包装{最大高度:100%!重要;顶部:0;}
你能告诉我过滤条件吗?那么你想得到哪个activityValue<10的过滤数组?基于strId需要过滤,它应该是对象数组而不是嵌套数组/对象没有其他条件你能告诉我过滤条件吗?那么你想得到哪个activityValue<10的过滤数组?基于strId需要过滤和它应该是对象数组而不是嵌套数组/对象无其他条件