在最近做项目中遇到了一个需求,要求 “先按照商品价格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)