關於js陣列方法sort()負數排序的陷阱

妞妞猪發表於2024-03-13

今天在刷力扣題的時候遇到陣列排序的問題,想著圖個方便就使用了arr.sort(),

剛開始用正數進行測試用例的時候沒有出錯,

問題:

在使用負數的測試用例時,預期目標是 [-10,-2,-1...1,2,3], 結果出現了 [-1,-2,-10......1,2,3] 這樣的結果

解析:

在網上找了一下發現,sort()這個方法: 預設情況下是按照 Unicode 程式碼進行排序的。對於數字,如果陣列包含負數,直接使用sort()可能不會按照數值的正常順序進行排序。

怎麼辦:

方法1:自己寫排序

方法2:寫自定義函式

升序:

arr = arr.sort((a,b)=>{
return a-b
})
降序:
arr = arr.sort((a,b)=>{
  return b-a
})
參考: https://blog.csdn.net/study_way/article/details/135478580

相關文章