字符数字混合排序
这篇文章(559a4842e736a6e544c0bd67)是从 Teambition 迁移过来的
字符数字混合情况下,如何获得按数字正确排序?
这里以 angularjs 的自定义排序作为例子,我使用了正则表达式把所有数字的区段找到,然后前面填充0。
js:
/**
* 设备列表 自定义排序
*
* 通过对数字补‘0’来获得正确的排序
* L12-3 -> L0012-0003
* 这里预估序号最大不会超过 9999,所有采用4位填充。
*/
$scope.orderByDeviceNo = function(_device) {
var _deviceNo = _device.deviceno;
_deviceNo = _deviceNo && _deviceNo.replace(/(\d+)/g, function($1) {
return paddingZero($1, 4);
});
return _deviceNo;
};
function paddingZero(num, n) {
return (Array(n).join(0) + num).slice(-n);
}
html:
<li ng-repeat="device in deviceList | orderBy:orderByDeviceNo" >