扫码关注官方订阅号
let arr = ['A1','A2','A100','A7','B2','A10','A14','B12','C1','C10','C5']
按照字母和数字的顺序进行排序
ringa_lee
写个比较函数就可以了吧
提供思路,拒绝伸手党
// ie6+ var arr = ['A1','A2','A100','A7','B2','A10','A14','B12','C1','C10','C5'] arr.sort(function(a, b) { var ret = a.charCodeAt(0) - b.charCodeAt(0); // 首字母处理 if (ret == 0) { ret = +a.slice(1) - +b.slice(1); // 数字处理 } return ret; });
规则都没描述清楚,哪个排序条件的权重大一点?
var arr = ["B12", "A1", "A10", "A100", "A14", "A2", "A7", "B2", "C1", "C10", "C5"]; var typeSort = (function () { var letter = /^[A-Z]+/g; var number = /\d+$/g; function match(context, reg) { return (context.match(reg) || [])[0]; } return function (arr) { return [].sort.call(arr, function (pre, next) { var preLetter = match(pre, letter); var preNumber = match(pre, number); var nextLetter = match(next, letter); var nextNumber = match(next, number); if (preLetter < nextLetter) { return -1; } if (preLetter > nextLetter) { return 1; } if (preLetter === nextLetter) { return ~~preNumber - ~~nextNumber; } }); } })(); console.log(typeSort(arr)); // => ["A1", "A2", "A7", "A10", "A14", "A100", "B2", "B12", "C1", "C5", "C10"]
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
写个比较函数就可以了吧
提供思路,拒绝伸手党
规则都没描述清楚,哪个排序条件的权重大一点?