这里的新手。我需要对随机对象数组进行排序(将数据传递给我构建的机器)。如何做到这一点?
var array = [{fgy : 34}, {sor : 56}, {dtr : 45}];
array.sort(function(a, b){return a- b;});
// 当然不行了
预期结果:
fgy : 34, dtr : 45, sor : 56
答案 0 :(得分:3)
如果您确定每个对象中只有一个键,并且您想要排序的只是值,那么您可以这样做:
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));
的操作,类似地,您可以执行值的总和、最小值等。您只需要分配 a< /em> 值到您的 aVal
和 bVal
,然后返回比较。
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)
答案 1 :(得分:0)
可以使用Array.sort方法,但是需要获取数组中每个Object内部的值。
您可以使用 Object.values(obj)[0]
来完成。
哪个将返回对象中的第一个值
例如:
let obj = { fgy: 34 }
console.log(Object.values(obj)[0]) // returns 34
然后就可以用sort方法了:
array.sort((a, b) => {
return Object.values(a)[0] - Object.values(b)[0]
})