首页 > 解决方案 > 排序对象的对象

问题描述

我目前有一个对象的对象,我希望在对象值的对象之一上对三个对象的对象进行排序。

例如,如果我有

{ A : { 1: 5, 2: 10,  3: 7}, 
  B : { 1: Alpha, 2: Beta, 3: Charlie}, 
  C : { 1: Z, 2: Y, 3: X} 
}

我想A按值(按 desc 顺序)对对象进行排序,同时保持键的完整性。B并且对and C(按顺序)进行了同样的排序。

结果数组将是[10, 7, 5][Beta, Charlie, Alpha][Y, X, Z]

标签: javascriptsortingobject

解决方案


使用Object.values()Object.entries().sort()

var obj = 
{ A : { 1: 5, 2: 10,  3: 7}, 
  B : { 1: "Alpha", 2: "Beta", 3: "Charlie"}, 
  C : { 1: "Z", 2: "Y", 3: "X"} 
};
obj = Object.values(obj);

var sorted = Object.entries(obj[0]).sort((a, b) => b[1] - a[1]);

var output = [];

sorted.forEach((v, i) => {
    output.push(obj.map(e => e[v[0]]));
})

console.log(output);

//new array with first of each array
var newarr = output.map(a => a[0]);

console.log(newarr);


推荐阅读