javascript 如何按值对对象进行排序

dw1jzc5e  于 2023-06-04  发布在  Java
关注(0)|答案(5)|浏览(195)

假设你在JS中有以下对象:

let obj = {a: 24, b: 12, c:21; d:15};

如何将'obj'转换为对象的键数组,并按值排序?

rsl1atfo

rsl1atfo1#

let obj = {a: 24, b: 12, c:21, d:15};

// Get an array of the keys:
let keys = Object.keys(obj);

// Then sort by using the keys to lookup the values in the original object:
keys.sort((a, b) => obj[a] - obj[b]);

console.log(keys);

请注意,如果需要,可以使用Object.keys(obj).sort(...)在一行中完成上述操作。显示的简单.sort()比较器函数仅适用于数值。交换ab以按相反方向排序。

pbgvytdp

pbgvytdp2#

var obj  = {
  a: 24, b: 12, c:21, d:15
};
var sortable = [];
for (var x in obj ) {
    sortable.push([x, obj[x]]);
}

sortable.sort(function(a, b) {
    return a[1] - b[1];
});

console.log(sortable)
ycggw6v2

ycggw6v23#

这里是获取排序对象的方法,并返回已排序的对象

let sortedObject = {}
sortedObject = Object.keys(yourObject).sort((a, b) => {
                        return yourObject[a] - yourObject[b] 
                    }).reduce((prev, curr, i) => {
                        prev[i] = yourObject[curr]
                        return prev
                    }, {});

你可以根据你的需求定制你的排序功能

t3psigkw

t3psigkw4#

用ASC或DESC Package 在函数中。

const myobj = {a: 24, b: 12, c:21, d:15};

function sortObjectbyValue(obj={},asc=true){ 
   const ret = {};
   Object.keys(obj).sort((a,b) => obj[asc?a:b]-obj[asc?b:a]).forEach(s => ret[s] = obj[s]);
   return ret
}

console.log(sortObjectbyValue(myobj))
sd2nnvve

sd2nnvve5#

如果目的只是在控制台中监视已排序的对象,我建议使用console.table(obj)而不是console.log(obj)在控制台中记录对象,结果将以最快的方式对键和值,asc和desc进行排序,而无需额外的过程。

相关问题