我在做一个投票系统的时候,后端给我返回一个数组List,立面包含选手所得票数,但没有排序,我需要根据每个选手的票数进行排序,数据如下:count属性为我们需要排序的数据。
var memberData = [
{
name: '选手1',
audio_source:'img/cbg.mp3',
num: '01',
count: 3
},
{
name: '选手2',
audio_source:'img/rocket.mp3',
num: '02',
count: 4
},
{
name: '选手3',
audio_source:'img/mySecret.mp3',
num: '03',
count: 1
},
{
name: '选手4',
audio_source:'img/myLove.mp3',
num: '04',
count: 8
},
{
name: '选手5',
audio_source:'img/myLove.mp3',
num: '05',
count: 12
}
]
简单介绍一下arr.sort()方法;
语法:arr.sort([compareFunction])
compareFunction可选
用来指定按某种顺序进行排列的函数。如果省略,元素按照转换为的字符串的各个字符的Unicode位点进行排序。
返回值:排序后的数组。请注意,数组已原地排序,并且不进行复制。
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,“比如compareFunction(a, b)”,其返回值如下:
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回一个大于 0 的值。
根据上方说明写出下面这个方法函数。
var contrast = function(obj1, obj2) {
var val1 = obj1.count;
var val2 = obj2.count;
if(val1 > val2) {
return -1;
} else if(val1 < val2) {
return 1;
} else {
return 0;
}
}
在调用sort方法引入这个contrast函数就可以
memberData.sort(contrast);
排序结果如下: