色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript 自定義比較器

馮子軒1年前7瀏覽0評論

JavaScript自定義比較器是指在數組排序時,可以自定義排序規則的函數,通常可以使用sort()方法進行排序。

比如在一組數字中,想要按照個位數的大小進行排序,就需要自定義比較器函數。

let arr = [23, 51, 87, 15, 42];
function compareFunc(a, b) {
return a % 10 - b % 10;
}
arr.sort(compareFunc);
console.log(arr); // [51, 23, 42, 15, 87]

上面的例子中,自定義比較器函數compareFunc返回的是a和b的個位數之差,從而實現了按個位數排序的功能。

也可以使用比較器函數進行字符串排序,比如按照字符長度。

let arr = ["apple", "banana", "peach", "orange"];
function compareFunc(a, b) {
return a.length - b.length;
}
arr.sort(compareFunc);
console.log(arr); // ["peach", "apple", "banana", "orange"]

在字符串比較時,自定義比較器函數返回的是a和b的長度之差。

除了數字和字符串,自定義比較器還可以用于對數組進行排序。

比如對以下數組按照每個元素的第一個數字進行排序。

let arr = [[7, "apple"], [3, "banana"], [5, "peach"], [1, "orange"]];
function compareFunc(a, b) {
return a[0] - b[0];
}
arr.sort(compareFunc);
console.log(arr); // [[1, "orange"], [3, "banana"], [5, "peach"], [7, "apple"]]

在數組比較時,自定義比較器函數返回的是a和b的第一個元素之差。

除了數字、字符串、數組,自定義比較器還可以涉及到對象。

比如按照每個對象的age屬性進行排序,如下:

let arr = [
{name: "Tom", age: 25},
{name: "Jerry", age: 19},
{name: "Bob", age: 35},
{name: "Alice", age: 28}
];
function compareFunc(a, b) {
return a.age - b.age;
}
arr.sort(compareFunc);
console.log(arr);
/* [
{name: "Jerry", age: 19},
{name: "Tom", age: 25},
{name: "Alice", age: 28},
{name: "Bob", age: 35}
] */

在對象比較時,自定義比較器函數返回的是a和b的age屬性之差。

在使用自定義比較器時,需注意幾點:

  • 自定義比較器函數需返回一個數字,表示a和b之間的大小關系
  • 若返回大于0的值,a會被排在b之后
  • 若返回小于0的值,a會被排在b之前
  • 若返回等于0的值,a和b的順序不會改變

自定義比較器可以應用于各種數據類型的排序,靈活性很高,值得掌握。