javascript - 排序对象的对象
问题描述
我目前有一个对象的对象,我希望在对象值的对象之一上对三个对象的对象进行排序。
例如,如果我有
{ 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]
。
解决方案
使用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);
推荐阅读
- javascript - 模式在 Firebase 登录完成之前关闭并重新加载页面
- json - 反序列化 JSON 并将叶子数据放入 Rc 结构的最佳方法是什么?
- primeng - Primeng 表:在 ngOnInit 中向表中添加行
- java - 在 Java 类之间传递变量状态
- c++ - 项目包含路径中的“.cpp”文件将不会被项目看到
- windows - 如何通过 PowerShell 为 Windows 10 上的当前用户设置 Windows 开始菜单布局
- laravel - lumen 6:如何在 lumen 上重构响应分页的数据?
- c# - 如何在 Firebase 分析中记录用户名?
- python - 是否有用于纠正以下 TypeError 的 Python 函数?
- node.js - Node.js - 我不断收到以下错误:错误:ffmpeg 流:写入 EPIPE