如何在javascript中按数值对对象排序
我试图对一个对象进行排序,以使投票最多的属性排在第一位。这是我的数据结构 我已经找到了一些关于如何做到这一点的文章,我已经创建了一个新的数组,并将投票值和玩家对象一起放入其中。我遇到的问题是按数字对选项进行排序,并从数组中删除投票计数。这是我的密码如何在javascript中按数值对对象排序,javascript,sorting,Javascript,Sorting,我试图对一个对象进行排序,以使投票最多的属性排在第一位。这是我的数据结构 我已经找到了一些关于如何做到这一点的文章,我已经创建了一个新的数组,并将投票值和玩家对象一起放入其中。我遇到的问题是按数字对选项进行排序,并从数组中删除投票计数。这是我的密码 var sortedOptions = []; for (let option of options) { sortedOptions.push(option, option.votes); } s
var sortedOptions = [];
for (let option of options) {
sortedOptions.push(option, option.votes);
}
sortedOptions.sort(function(a, b) {
})
我一直在关注,但我不了解排序函数是如何工作的,以及如何为我的目的执行它
谢谢你的帮助:)
编辑:
我尝试执行以下代码,但是这返回了一个带有8个选项的对象,并且该对象没有排序
sortedOptions.sort(function(a, b) {
return a.votes - b.votes;
})
导致
您可以使用
sort函数将函数作为参数,它比较数组中的两个元素以确定哪个元素应在何处排序
对于您希望根据投票进行排序的情况,您可以这样写:
options.sort(function(a, b) {
// use b - a to sort descending, a - b to sort ascending
return b.votes - a.votes;
})
您使用的for循环很奇怪:它生成了一个混合了对象和数字的数组,这就是为什么sort函数对它不起作用。直接在options
上排序,或者如果需要副本,请使用让sortedOptions=JSON.parse(JSON.stringify(options))代码>您可以使用
sort函数将函数作为参数,它比较数组中的两个元素以确定哪个元素应在何处排序
对于您希望根据投票进行排序的情况,您可以这样写:
options.sort(function(a, b) {
// use b - a to sort descending, a - b to sort ascending
return b.votes - a.votes;
})
您使用的for循环很奇怪:它生成了一个混合了对象和数字的数组,这就是为什么sort函数对它不起作用。直接在options
上排序,或者如果需要副本,请使用让sortedOptions=JSON.parse(JSON.stringify(options))
函数(a,b){返回a.uiIndex-b.uiIndex}
您可以使用@Danmoreng OP,它已经在使用了:-函数(a,b){return a.uiIndex-b.uiIndex}
的可能重复项您可以使用@Danmoreng OP,它已经在使用了:-谢谢你的回答,伙计。我只是试着试一试,它用8个值而不是4个值对选项进行排序(因为它没有删除以前插入的投票),而且它们也没有排序,这是我以前遇到的问题。我用一个截图编辑了这个问题,以便更好地解释我的意思。您也可以直接在选项
数组中排序。for循环让我很恼火,但我认为您只想在原始数组的副本上排序。在循环中,您将投票和包含投票的对象都添加到数组中,因为排序函数不起作用。我只是根据您给出的答案进行了操作,我直接从选项数组对其进行排序。我想我只是在阅读我链接的那篇文章后陷入了混乱,将选票总数添加到了分类中。我不需要那样做,所以我只是按照你的答案做。干杯,谢谢你的回答,伙计。我只是试着试一试,它用8个值而不是4个值对选项进行排序(因为它没有删除以前插入的投票),而且它们也没有排序,这是我以前遇到的问题。我用一个截图编辑了这个问题,以便更好地解释我的意思。您也可以直接在选项
数组中排序。for循环让我很恼火,但我认为您只想在原始数组的副本上排序。在循环中,您将投票和包含投票的对象都添加到数组中,因为排序函数不起作用。我只是根据您给出的答案进行了操作,我直接从选项数组对其进行排序。我想我只是在阅读我链接的那篇文章后陷入了混乱,将选票总数添加到了分类中。我不需要那样做,所以我只是按照你的答案做。干杯,祝你一切顺利