首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JavaScript 數組排序 compareFunction 原理解析

     編輯:程式設計疑難解答

問題代碼

arr.sort(orderby);
function orderby(a, b) {
    return a - b;
}

核心原理

Array.prototype.sort() 接受可選比較函數 compareFn(a, b),返回值決定順序:

  • 返回 < 0:a 排在 b 前面
  • 返回 = 0:順序不變
  • 返回 > 0:a 排在 b 後面

為什麼 a-b 能按數值排序

數值相減直接反映大小關係:

  • a < b → a-b 為負 → a 前移
  • a > b → a-b 為正 → a 後移
  • a = b → 返回 0 → 保持原序(穩定排序)

擴展:字符串/對象排序

// 字符串按字母序
arr.sort((a, b) => a.localeCompare(b));

// 對象按屬性排序
users.sort((a, b) => a.age - b.age);

注意事項

默認 sort() 會將元素轉為字符串按 Unicode 排序,必須提供 compareFn 進行數值排序。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved