Javascript 对嵌套的对象数组进行筛选和排序
我有一个对象数组,每个对象都有另一个对象数组,我想用一个特定的键值来过滤这些对象-例如,只返回对象,其中名称:“作业” 之后,我将对companys数组中的所有对象进行排序,并返回“jobs”得分最高的对象 我不确定解决这个问题的最佳方法是什么 以下是对象的原始数组:Javascript 对嵌套的对象数组进行筛选和排序,javascript,arrays,sorting,filter,Javascript,Arrays,Sorting,Filter,我有一个对象数组,每个对象都有另一个对象数组,我想用一个特定的键值来过滤这些对象-例如,只返回对象,其中名称:“作业” 之后,我将对companys数组中的所有对象进行排序,并返回“jobs”得分最高的对象 我不确定解决这个问题的最佳方法是什么 以下是对象的原始数组: companies = [ { about:"Dolore occaecat cillum." address:"Manhattan Court, 445"
companies = [
{
about:"Dolore occaecat cillum."
address:"Manhattan Court, 445"
city:"Brecon, Massachusetts"
email:"info@ziggles.info"
id:0
name:"Ziggles"
phone:"+1 (944) 472-2911"
postal_code:33
project_number:2016823
scores:[
{
name:"jobs"
score:"2.7"
},
{
name:"facility"
score:"4.2"
},
{
name:"location"
score:"4.7"
}
]
},
...
]
我想过滤数组分数,并为公司数组中的每个对象返回以下结构
companies = [
{
about:"Dolore occaecat cillum."
address:"Manhattan Court, 445"
city:"Brecon, Massachusetts"
email:"info@ziggles.info"
id:0
name:"Ziggles"
phone:"+1 (944) 472-2911"
postal_code:33
project_number:2016823
scores:[
{
name:"jobs"
score:"2.7"
}
]
},
...
]
您需要先筛选,然后对数组进行排序
//删除公司的额外详细信息以使代码更易于阅读
公司=[
{
id:0,
分数:[
{
名称:“工作”,
得分:“2.7”
},
{
名称:“设施”,
分数:“4.2”
},
{
名称:“地点”,
分数:“4.7”
}
],
},
{
名称:“C2”,
分数:[
{
名称:“工作”,
得分:“3”
},
{
名称:“设施”,
分数:“4.2”
},
{
名称:“地点”,
分数:“4.7”
}
]
},
{
名称:“C3”,
分数:[
{
名称:“设施”,
分数:“4.2”
},
{
名称:“地点”,
分数:“4.7”
}
]
},
]
//如果公司是一个大阵列,您可能需要将过滤器与
const newCompanies=companies.filter(comp=>comp.scores.find(scoreObject=>scoreObject.name==“jobs”)).sort((comp1,comp2)=>parseFloat(comp2.scores.find(scoreObject=>scoreObject.name==“jobs”).score,10)-parseFloat(comp1.scores.find(scoreObject=>scoreObject.name==“jobs”).score,10))
console.log(newCompanies)//第一个元素得分最高
返回“jobs”得分最高的元素,它是一个对象还是一个只包含一个项的数组?