我正在尝试对一个对象进行排序,以便得票最多的属性排在第一位。这是我的数据结构
我找到了一些关于如何执行此操作的文章,并且创建了一个新数组,并将投票值以及玩家对象插入其中。我遇到的问题是按数字对选项进行排序,并从数组中删除票数。这是我的代码
var sortedOptions = [];
for (let option of options) {
sortedOptions.push(option, option.votes);
}
sortedOptions.sort(function(a, b) {
})
我一直在关注this但我不明白排序函数是如何工作的以及如何实现我的目的。
感谢您的帮助:)
编辑: 我尝试执行以下代码,但这返回一个具有 8 个选项的对象,并且该对象未排序
sortedOptions.sort(function(a, b) {
return a.votes - b.votes;
})
最佳答案
排序函数采用一个函数作为参数,它比较数组的两个元素以确定哪个元素应在何处排序。
对于您想要根据投票进行排序的情况,您可以这样写:
options.sort(function(a, b) {
// use b - a to sort descending, a - b to sort ascending
return b.votes - a.votes;
})
您使用的 for 循环很奇怪:它生成一个混合了对象和数字的数组,这就是排序函数不起作用的原因。直接对 options
进行排序,或者如果需要副本,请使用 letsortedOptions = JSON.parse(JSON.stringify(options));
关于javascript - 如何在 javascript 中按数值对对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47017749/