首页 > 解决方案 > 对具有随机值的对象数组进行排序

问题描述

总新手在这里。我需要对随机对象数组进行排序(将数据传递给我构建的机器)。怎么做?

var array = [{fgy : 34}, {sor : 56}, {dtr : 45}];

array.sort(function(a, b){return a- b;});// 当然它不起作用

预期结果:

fgy : 34, dtr : 45, sor : 56

标签: javascript

解决方案


如果您确定每个对象中只有一个键,并且您想要排序的只是值,那么您可以这样做:

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));aValbVal

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)


推荐阅读