数组多条件排序

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

猜你喜欢

转载自blog.csdn.net/cengjing123_/article/details/118144443