按字母顺序对对象值进行排序

时间:2021-01-18 21:55:28

标签: javascript

所以我正在研究一个具有等级系统的不和谐机器人。我已经到了有一个看起来像这样的对象的地步:

let ranks = {
   "Joe": 1,
   "Mary": 6,
   "Johnson": 4
}

所以我需要按级别对它们进行排序,使其看起来像这样:

let ranks = {
   "Mary": 6,
   "Johnson": 4,
   "Joe": 1
}

我不知道如何做到这一点。我尝试将值放入列表并使用 names.sort() 但这不起作用。任何帮助都会得到帮助。

2 个答案:

答案 0 :(得分:0)

我看不出对对象属性进行排序的原因。由于Object.entries

,您可以将对象转换为数组以使用排序

例如

let sortedArr = Object.entries(ranks).sort((a,b) => (b[1] -a[1]));

然后你在 Object.fromEntries()

之前得到你的结果
let sortedObj = Object.fromEntries(sortedArr)

答案 1 :(得分:0)

使用此代码

let ranks = {
   "Joe": 1,
   "Mary": 6,
   "Johnson": 4,
   'Ahmed': 1

}
console.log( ranks)
//get the keys
var keys = Object.keys(ranks)
var testArray = [] ;

// get a new array to work on 
keys.forEach(key=>{
  testArray.push(key)  
})

// sort the keys
 
var sortedKeys = testArray.sort()

// get the right values of the sorted keys

var sortedVals = []
sortedKeys.forEach(Skey =>{
  sortedVals.push(ranks[Skey])
})

//clear the old ranks 

ranks = {}
var i = 0;

// get the new ranks object
sortedKeys.forEach(key=>{
  ranks[key] = sortedVals[i]
  i++
})

console.log( ranks)

相关问题