javascript - 对具有随机值的对象数组进行排序
问题描述
总新手在这里。我需要对随机对象数组进行排序(将数据传递给我构建的机器)。怎么做?
var array = [{fgy : 34}, {sor : 56}, {dtr : 45}];
array.sort(function(a, b){return a- b;});
// 当然它不起作用
预期结果:
fgy : 34, dtr : 45, sor : 56
解决方案
如果您确定每个对象中只有一个键,并且您想要排序的只是值,那么您可以这样做:
var array = [{fgy : 34}, {sor : 56}, {dtr : 45}];
let sorted = array.slice().sort((a,b) => {
let aVal = Object.values(a)[0];
let bVal = Object.values(b)[0];
return aVal - bVal;
});
console.log(sorted)
如果每个对象上可以有多个键,您只需要确定要排序的内容并将其用于您的和aVal
函数中。例如,如果你想按最大值排序,你可以做类似的事情,类似地,你可以做值的总和,最小值等。你只需要给你分配一个值,然后返回比较.bVal
.sort()
let aVal = Math.max(...Object.values(a));
aVal
bVal
ES5 语法版本(在评论中要求)
var array = [{fgy : 34}, {sor : 56}, {dtr : 45}];
let sorted = array.slice().sort((a,b) => {
var aVal = a[Object.keys(a)[0]];
var bVal = b[Object.keys(b)[0]];
return aVal - bVal;
});
console.log(sorted)
推荐阅读
- oracle-apex - 无法授予 ACL 执行网络连接的权限
- firebase - MethodChannel#plugins.flutter.io/firebase_auth(31559):处理方法调用失败
- c# - 在 linq 查询中处理 Nullable bool
- angular - 将主页加载为存储在本地存储中的登录页面用户 ID
- office365 - 新电子邮件到达 Office365 时 Outlook 插件中是否有任何事件
- python - 在 Python 中制作计算器以检查有效性的问题
- c# - C# 发布的 exe 不会在非管理员帐户上启动
- android - 系统应用程序中的 ClassCastException ContentFrameLayout androidx 与 support.v7
- php - 如何将 proto 文件编译为单个 php 文件
- c++ - 如何将查询结果分配给类变量?