vue element UI 에서 table 의 숫자,알파벳,중국어 혼합 정렬 문 제 를 해결 합 니 다.

1.필드 사용
elementUI 에 있 는 table 을 사용 할 때 알파벳 중국어 이름 등 필드 에 정렬 합 니 다.
예 를 들 어 숫자(0->9)->대문자(A->Z)->소문 자(a->z)->중국어 병 음(a->z)
2.코드 분석

<el-table
   ref="multipleTable"
   border
   tooltip-effect="dark"
   class="xg-table"
   style="width: 100%"
   max-height="600">
   <el-table-column
    type="selection"
    width="60" />
   <el-table-column
    :default-sort = "{prop: 'DevName'}"
    :sort-method="sortDevName"
    prop="DevName"
    label="  "
    sortable
    show-overflow-tooltip />
</el-table>
속성 sortable 을 설정 하면 자체 시스템 에 따라 정렬 되 고 우리 의 기대 에 부합 되 지 않 습 니 다.
그래서 속성 sort-method 를 추가 하여 정렬 방식 을 사용자 정의 합 니 다.

<script>
  export default {
    methods: {
      sortDevName(str1, str2) {
       let res = 0
       for (let i = 0; ;i++) {
  if (!str1[i] || !str2[i]) {
   res = str1.length - str2.length
   break
  }
  const char1 = str1[i]
  const char1Type = this.getChartType(char1)
  const char2 = str2[i]
  const char2Type = this.getChartType(char2)
  //            
  if (char1Type[0] === char2Type[0]) {
   if (char1 === char2) {
   continue
   } else {
   if (char1Type[0] === 'zh') {
    res = char1.localeCompare(char2)
   } else if (char1Type[0] === 'en') {
    res = char1.charCodeAt(0) - char2.charCodeAt(0)
   } else {
    res = char1 - char2
   }
   break
   }
  } else {
  //      ,          
   res = char1Type[1] - char2Type[1]
   break
  }
   }
   return res
  },
  getChartType(char) {
  //                ,         
  //   (0->9)->    (A->Z)->    (a->z)->    (a->z)
   if (/^[\u4e00-\u9fa5]$/.test(char)) {
  return ['zh', 300]
   }
   if (/^[a-zA-Z]$/.test(char)) {
  return ['en', 200]
   }
   if (/^[0-9]$/.test(char)) {
  return ['number', 100]
   }
   return ['others', 999]
  }
    }
  }
</script>
3.페이지 효과
 원래 목록                   ==》》            정상 적 인 순서                 ==》》         역순

총결산
위 에서 말 한 것 은 편집장 이 여러분 에 게 소개 한 vue element UI 에서 table 의 숫자,자모,중국어 혼합 정렬 문 제 를 해결 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.편집장 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기