Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中按数值对对象排序_Javascript_Sorting - Fatal编程技术网

如何在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循环让我很恼火,但我认为您只想在原始数组的副本上排序。在循环中,您将投票和包含投票的对象都添加到数组中,因为排序函数不起作用。我只是根据您给出的答案进行了操作,我直接从选项数组对其进行排序。我想我只是在阅读我链接的那篇文章后陷入了混乱,将选票总数添加到了分类中。我不需要那样做,所以我只是按照你的答案做。干杯,祝你一切顺利