[Javascript] Use a custom sort function on an Array in Javascript
Sorting in Javascript with sort
uses lexical sorting by default, which means it will sort in alphabetical order. That's fine for strings of characters, but it means that arrays of numbers don't sort in numerical order! To fix that, we'll pass a custom comparator function to sort
. The function you pass to sort
will be passed two values from the array at a time, and should return a value <0, =0 or >0, based on which value should be sorted first in the final array.
Once you have a custom sort function implemented, you can sort in any way that you'd like. We'll show that by pulling out just part of a string, and sorting based on that value.
const numberArr = [12, 50, 6, -1, 0, -9] const descSort = numberArr.sort((a, b) => { return b - a }) console.log(descSort) const numberSorted = numberArr.sort((a, b) => { if(a < 0 && b < 0) { return a - b // -n should be start from small to large } else if(a < 0 || b < 0) { return b - a // +n come first, -n come last } else { return a - b // from small to large } }) console.log(numberSorted) // [0, 6, 12, 50, -9, -1] const floorArr = [ "6th Floor", "2nd Floor", "11th Floor", "8th Floor", "7th Floor", "9th Floor", "1st Floor", "3rd Floor", "10th Floor", "5th Floor", "4th Floor", ] const sorted = floorArr.sort((a, b) => { return a.match(/\d+/) - b.match(/\d+/) }) console.log(sorted) // ["1st Floor", "2nd Floor", "3rd Floor", "4th Floor", "5th Floor", "6th Floor", "7th Floor", "8th Floor", "9th Floor", "10th Floor", "11th Floor"] [0, 6, 12, 50, -9, -1]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2017-10-30 [Anuglar & NgRx] StoreRouterConnectingModule
2017-10-30 [Unit testing] data-test attr FTW
2016-10-30 [Angular2 Form] Validation message for Reactive form
2016-10-30 [Angular2 Form] Check password match
2016-10-30 [Angular2 Form] patchValue, setValue and reset() for Form