js sort 排序


    js 中的 sort 排序的常規方式是 a - b ,就可以返回正序或者倒敘,前提是這兩個是相同的數值。如果說要兼容其他的情況,比如說沒有取到相同的數值,那就要考慮直接用名稱來排序了。

    多啰嗦一句,如果是取特定字符串里的數值,建議轉成統一的大寫或者小寫。

   

 const arr = i.sort((a: any, b: any) => {
      const name = a.name.toLocaleLowerCase().split(' ')
      const markName = name[name.length - 1]
      const mark = markName.indexOf('hca') > -1 ? '-' : markName.indexOf('mlx') > -1 ? '_' : ''
      if (mark) {
        const startIndex = a.name.lastIndexOf(mark)
        const splitVal = a.name.substring(0, startIndex + 1)
        return (
          Number(a.name.replace(splitVal, '')) - Number(b.name.replace(splitVal, ''))
        )
      } else {
        return a.name.localeCompare(b.name)
      }
    })

  localeCompare 是 Js 提供了一種更簡便的方法用於比較兩個字符串的方法。hca 和 mlx 是我項目里用的特定值,如果這兩個都沒有取到,那就用字符串排序。

 const list = [
      {
        name: 'erpsu03 mlx5_0'
      },
      {
        name: 'erpsu03 mlx5_1'
      },
      {
        name: 'erpsu03 mlx5_2'
      }
    ]

  

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM