4 changed files with 71 additions and 4 deletions
@ -0,0 +1,67 @@
|
||||
import { Pipe, PipeTransform } from '@angular/core'; |
||||
import { FacilityInfoUIItem } from '../babylon/view/facilityinfoinscene-window/facilityinfo-ui-item'; |
||||
|
||||
@Pipe({ |
||||
name: 'facilitySort' |
||||
}) |
||||
export class FacilitySortPipe implements PipeTransform { |
||||
|
||||
transform(items: FacilityInfoUIItem[]) { |
||||
items.forEach(item=>{ |
||||
if (!this.isHasNumber(item.getPropertyData().name)) { |
||||
item.getPropertyData().name = this.handleChineseNumber(item.getPropertyData().name) |
||||
} |
||||
}) |
||||
items.sort(function (a, b) { |
||||
var _a = a.getPropertyData().name.match(/^(.*?)(\d*)$/); |
||||
var _b = b.getPropertyData().name.match(/^(.*?)(\d*)$/); |
||||
if (_a[1] === _b[1]) { |
||||
return parseInt(_a[2] || 0) - parseInt(_b[2] || 0); |
||||
} else { |
||||
return _a[1].localeCompare(_b[1]); |
||||
} |
||||
}) |
||||
return items; |
||||
} |
||||
|
||||
//处理 汉字数字
|
||||
handleChineseNumber(str: string): string { |
||||
if (str.includes('一')) { |
||||
str = str.replace("一", "") |
||||
return `1${str}` |
||||
} else if (str.includes('二')) { |
||||
str = str.replace("二", "") |
||||
return `2${str}` |
||||
} else if (str.includes('三')) { |
||||
str = str.replace("三", "") |
||||
return `3${str}` |
||||
} else if (str.includes('四')) { |
||||
str = str.replace("四", "") |
||||
return `4${str}` |
||||
} else if (str.includes('五')) { |
||||
str = str.replace("五", "") |
||||
return `5${str}` |
||||
} else if (str.includes('六')) { |
||||
str = str.replace("六", "") |
||||
return `6${str}` |
||||
} else if (str.includes('七')) { |
||||
str = str.replace("七", "") |
||||
return `7${str}` |
||||
} else if (str.includes('八')) { |
||||
str = str.replace("八", "") |
||||
return `8${str}` |
||||
} else if (str.includes('九')) { |
||||
str = str.replace("九", "") |
||||
return `9${str}` |
||||
} else { |
||||
return str |
||||
} |
||||
} |
||||
|
||||
//正则校验 是否包含阿拉伯数字
|
||||
isHasNumber(str: string): boolean { |
||||
let reg = /\d/; |
||||
return reg.test(str) |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue