Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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_Jquery_Sorting_Javascript Objects_Nested Object - Fatal编程技术网

Javascript 对嵌套对象排序

Javascript 对嵌套对象排序,javascript,jquery,sorting,javascript-objects,nested-object,Javascript,Jquery,Sorting,Javascript Objects,Nested Object,我正试图通过object.keys在javascript中根据cummulativeSite按降序对objects obj中的object进行排序,但没有得到排序。请建议一种好的方法或方法来对其进行排序 var obj={ B.E:{ A: {percentgsite: 8.5, backlogenclsite: 8.5, regularenclsite: 3.5, cummulativeSite: 20.5}, B: {percentgsite: 5.9, backlog

我正试图通过object.keys在javascript中根据cummulativeSite按降序对objects obj中的object进行排序,但没有得到排序。请建议一种好的方法或方法来对其进行排序

var obj={


 B.E:{
    A: {percentgsite: 8.5, backlogenclsite: 8.5, regularenclsite: 3.5, cummulativeSite: 20.5},
    B: {percentgsite: 5.9, backlogenclsite: 5.9, regularenclsite: 8.5, cummulativeSite: 20.3},
    C: {percentgsite: 5.9, backlogenclsite: 6.4, regularenclsite: 8.9, cummulativeSite: 21.200000000000003}
    },



 Diploma:{
    A: {percentgsite: 8.5, cummulativeSite: 5.2},
    B: {percentgsite: 5.9, cummulativeSite: 8.5},
    C: {percentgsite: 5.9, cummulativeSite: 5.6}
    },



 M.E:{
    A: {percentgsite: 8.5, cummulativeSite: 11.9},
    B: {percentgsite: 5.9, cummulativeSite: 12.9},
    C: {percentgsite: 5.9, cummulativeSite: 13.5}
    }
}
预期产出:

var obj={


 B.E:{

    C: {percentgsite: 5.9, backlogenclsite: 6.4, regularenclsite: 8.9, cummulativeSite: 21.200000000000003},
    A: {percentgsite: 8.5, backlogenclsite: 8.5, regularenclsite: 3.5, cummulativeSite: 20.5},
    B: {percentgsite: 5.9, backlogenclsite: 5.9, regularenclsite: 8.5, cummulativeSite: 20.3}
    },



 Diploma:{
    B: {percentgsite: 8.5, cummulativeSite: 8.5},
    C: {percentgsite: 5.9, cummulativeSite: 5.6},
    A: {percentgsite: 5.9, cummulativeSite: 5.2}
    },



 M.E:{
    C: {percentgsite: 8.5, cummulativeSite: 13.5},
    B: {percentgsite: 5.9, cummulativeSite: 12.9},
    A: {percentgsite: 5.9, cummulativeSite: 11.9}
    }
}
您可以使用嵌套的和类似的

var obj={“B.E”:{A:{百分位:8.5,背面镶嵌石:8.5,规则镶嵌石:3.5,累积镶嵌石:20.5},B:{百分位:5.9,背面镶嵌石:5.9,规则镶嵌石:8.5,累积镶嵌石:20.3},C:{百分位:5.9,背面镶嵌石:6.4,规则镶嵌石:8.9,累积镶嵌石:21.20000000003,累积镶嵌石:2,累积镶嵌石:5}{percentgsite:5.9,cumulativesite:8.5},C:{percentgsite:5.9,cumulativesite:5.6},“M.E:{A:{percentgsite:8.5,cumulativesite:11.9},B:{percentgsite:5.9,cumulativesite:12.9},C:{percentgsite:5.9,cumulativesite:13.5}
const sortedObj=Object.entries(obj).reduce((acc,[dept,v])=>{
const sortedDept=对象条目(v)
.sort(([k1,v1],[k2,v2])=>v2.cumulativesite-v1.cumulativesite)
.reduce((r[k,v])=>(r[k]=v,r),{});
acc[部门]=已分拣的数据;
返回acc;
}, {})

console.log(sortedObj)
正如您在评论中提到的,您可以将
B.E
等更改为数组(因为对象不保证顺序)。因此,我将在数组中更改它们,然后根据
cumulativesite
属性对它们进行排序

(A:{百分之:8.5,背景积层:8.5,规则积层:3.5,背景积层:3.5,背景积层:3.5,累积积层:20.5}},{B:{百分之:20.5},{B:{百分之:20.5,背景积层:20.5},{B:{他们他们他们他们他们他们:{5.5},{B:{百分之:20.5.5.5}}},{5.5},{一个},{B:{B:{百分之:百分之:20.5.5.5.5.5.5.5,累积积层:20.5}}}}},{,{5.5,累积积层:20.5.5},积层:20.5.5}}}},{5,积层:20.5}},{},{B:{percentgsite:5.9,cumulativesite:8.5},{C:{percentgsite:5.9,cumulativesite:5.6}],'M.E':[{A:{percentgsite:8.5,cumulativesite:11.9},{B:{percentgsite:5.9,cumulativesite:12.9},{C:{percentgsite:5.9,cumulativesite:13.5}] Object.keys(obj.forEach)(e=>{ obj[e].排序((a,b)=>{ 返回Object.values(a)[0].cumulativeSite- Object.values(b)[0].cumulativeSite }) })
控制台日志(obj)那不是一个有效的数组。
arr
是一个数组还是一个以
B.E
文凭
M.E
为键的对象?我想B.E、文凭和M.E是独立的数组,对吗?@adigaobject@WagnerdeAndradePerin他们是objects@Kris对象不保证顺序,所以如果y,则B.E,M.E需要是数组如果我把文凭、文凭和医学硕士作为一个数组放在这个对象里,那就足够了吗@adiga@Kris您打算如何将“B.E”转换为数组?结构是否为
“B.E”:[{“A”:{percentgsite}},{“B”:{percentgsite}}]
“B.E”:[{percentgsite},{percentgsite}]
这是我将其更改为数组时的格式。我是否可以实现您在本例中建议的排序方式。@adigavar obj={B.E:[0:{A:{percentgsite:8.5,backlogenclsite:8.5,regularenclesite:3.5,cumulativesite:20.5},B:{percentgsite:5.9,backlogenclsite:5.9,regularenclesite:8.5,cumulativesite:20.3};C:{percentgsite:5.9,backlogenclsite:6.4,regulareclasite:8.9,cumulativesite:2120000000003}],@adigavar obj={B.E:[0:{A:{percentgsite:8.5,backlogenclsite:8.5,regulareclasite:3.5,cumulativesite:20.5},B:{percentgsite:5.9,backlogenclasite:5.9,regularecluativesite:8.5,cumulativesite:20.3]{percentgsite:5.9,backlogenclsite:6.4,regularenclsite:8.9,CumulativeSite:21.20000000003}],@Code Maniac我得到的是这种格式的B.E数组。你能建议排序吗now@Kris您发布的一个似乎不是有效的一个
{B.E:[0:
这0是数组所在的索引@code Maniac