假设你在JS中有以下对象:
let obj = {a: 24, b: 12, c:21; d:15};
如何将'obj'转换为对象的键数组,并按值排序?
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()比较器函数仅适用于数值。交换a和b以按相反方向排序。
Object.keys(obj).sort(...)
.sort()
a
b
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)
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 }, {});
你可以根据你的需求定制你的排序功能
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))
sd2nnvve5#
如果目的只是在控制台中监视已排序的对象,我建议使用console.table(obj)而不是console.log(obj)在控制台中记录对象,结果将以最快的方式对键和值,asc和desc进行排序,而无需额外的过程。
console.table(obj)
console.log(obj)
5条答案
按热度按时间rsl1atfo1#
请注意,如果需要,可以使用
Object.keys(obj).sort(...)
在一行中完成上述操作。显示的简单.sort()
比较器函数仅适用于数值。交换a
和b
以按相反方向排序。pbgvytdp2#
ycggw6v23#
这里是获取排序对象的方法,并返回已排序的对象
你可以根据你的需求定制你的排序功能
t3psigkw4#
用ASC或DESC Package 在函数中。
sd2nnvve5#
如果目的只是在控制台中监视已排序的对象,我建议使用
console.table(obj)
而不是console.log(obj)
在控制台中记录对象,结果将以最快的方式对键和值,asc和desc进行排序,而无需额外的过程。