用sort方法根据数组中某个对象属性进行排序

我在做一个投票系统的时候,后端给我返回一个数组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);

排序结果如下:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值