JS的sort()方法 - 用法 以及箭头函数写法

定义与用法

sort() 方法用于对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串UniCode码。

语法

arrayObject.sort(sortby)

参数

sortby 可选,用来规定排序的顺序,但必须是函数。

案例一:

在js中我们可以对数组元素使用sort方法进行排序,如下:

var arr =[0,1,56,23,34,3]
arr.sort()
console.log(arr)
//打印[0, 1, 23, 3, 34, 56]

原因:
从案例中发现得到的结果并不是我们想要的,为什么呢?? 原因是在使用sort排序的时候它总会使用第一个字符的ASCII值来进行比较排序,所以就出现了这个结果,所以下面做了下改进分升序和降序的两种方式。代码改进如下:

//升序
var arr =[0,1,56,23,34,3]
function sortNumber(a,b){
   return a-b;
}
arr.sort(sortNumber)
console.log(arr)//打印[0, 1, 3, 23, 34, 56]
//箭头函数
// arr.sort((a, b) => a-b)

//降序
var arr =[0,1,56,23,34,3]
function sortNumber(a,b){
   return b-a;
}
arr.sort(sortNumber)
console.log(arr)//打印[56, 34, 23, 3, 1, 0]
//箭头函数
// arr.sort((a, b) => b-a)

案例二:

按照数组对象中某个属性值进行排序

const arr2 = [
            { id: 10, flag: true },
            { id: 5, flag: false },
            { id: 6, flag: true },
            { id: 9, flag: false }
];
const r = arr2.sort((a, b) => b.flag - a.flag);//如果这里想根据id进行排序就改成.id
console.log(r);
// 打印
// [
//     { id: 10, flag: true },
//     { id: 6, flag: true },
//     { id: 5, flag: false },
//     { id: 9, flag: false }
// ]

案例三:

1.去除name相同的对象
2.且保留的是创建时间最早的对象


var arr=[  
	{    name: '玉骨遥寒薇结海报',    created_at: '2021-06-04 04:54:06.164',  },
	{    name: '玉骨遥寒薇结海报',    created_at: '2021-06-04 04:52:49.753',  },
	{    name: '玉骨遥寒薇结海报',    created_at: '2021-06-04 05:02:02.398',  },
	{    name: '公交车抛锚警民携手推车为考生开路',    created_at: '2021-06-04 04:52:40.588',  }, 
	{    name: '公交车抛锚警民携手推车为考生开路',    created_at: '2021-06-04 05:07:21.587',  },
]

arr.reduce(function(s,v){
    var itemIdx = s.findIndex(v1=>v1.name==v.name);
    if(itemIdx == -1){
        s.push(v)
    }else{
        var item = s[itemIdx];
        if(v.created_at < item.created_at){
            s.splice(itemIdx,1,v)
        }
    }
    return s
},[]) //返回数组格式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值