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需要过滤和它应该是对象数组而不是嵌套数组/对象无其他条件