数组多条件排序

在最近做项目中遇到了一个需求,要求 “先按照商品价格price ‘从高到低’ 降序 排列,如果价格一样的话,再按照 商品id ‘从低到高’ 升序 排列”

用到的方法: Array.sort(); 
let originalArr = [
	{ price:5 , id:7 },
	{ price:6 , id:2 },
	{ price:3 , id:6 },
	{ price:5 , id:3 },
	{ price:3 , id:4 },
	{ price:7 , id:5 },
]

let afterSortArr = originalArr.sort((prev,next)=>{
		   		//判断价格是否一致 ? 一致的话按照id升序排列 : 按照价格降序排列
	return prev.price===next.price ? prev.id - next.id : next.price - prev.price
})

console.log(afterSortArr)

//打印结果
[{price: 7, id: 5}
 {price: 6, id: 2}
 {price: 5, id: 3}
 {price: 5, id: 7}
 {price: 3, id: 4}
 {price: 3, id: 6}]

sort()方法,接收了一个函数作为参数时,排序主要根据传入函数的返回值是否大于0进行排序。

   1)当 a - b < 0  时, 则 a 元素排在 b 元素的前面。

   2)当 a - b = 0 时, a , b 元素的位置不变。

   3)当 a - b > 0 是, 则 b 元素排在 a 元素的前面。

升序与降序方法:

//升序
arr.sort((a,b) => a - b)

//降序
arr.sort((a,b) => b - a)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值