Javascript 对嵌套的对象数组进行筛选和排序

Javascript 对嵌套的对象数组进行筛选和排序,javascript,arrays,sorting,filter,Javascript,Arrays,Sorting,Filter,我有一个对象数组,每个对象都有另一个对象数组,我想用一个特定的键值来过滤这些对象-例如,只返回对象,其中名称:“作业” 之后,我将对companys数组中的所有对象进行排序,并返回“jobs”得分最高的对象 我不确定解决这个问题的最佳方法是什么 以下是对象的原始数组: companies = [ { about:"Dolore occaecat cillum." address:"Manhattan Court, 445"

我有一个对象数组,每个对象都有另一个对象数组,我想用一个特定的键值来过滤这些对象-例如,只返回对象,其中名称:“作业”

之后,我将对companys数组中的所有对象进行排序,并返回“jobs”得分最高的对象

我不确定解决这个问题的最佳方法是什么

以下是对象的原始数组:

        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”得分最高的元素,它是一个对象还是一个只包含一个项的数组?