JavaScript学習ノート13:高次関数-sort

4201 ワード

JavaScript教程転送ゲート
ソートアルゴリズム
順序付けのコアは、2つの要素のサイズを比較することであり、通常は、2つの要素xおよびyについて、x < yと考えると、-1に戻り、x == yと考えると0に戻り、x > yと考えると1に戻る.
JavaScriptのArraysort()の方法は並べ替えのためのものですが、並べ替えの結果はびっくりするかもしれません.
//         :
['Google', 'Apple', 'Microsoft'].sort(); // ['Apple', 'Google', 'Microsoft'];

// apple     :
['Google', 'apple', 'Microsoft'].sort(); // ['Google', 'Microsoft", 'apple'],apple     ,        ASCII     ,     a ASCII        

//        :
[10, 20, 1, 2].sort(); // [1, 10, 2, 20],Array sort()             String   ,  '10'   '2'   ,    '1'   '2' ASCII  
もしsort()方法のデフォルトの並べ替え規則が分からないならば、直接数字に対して並べ替えて、絶対に穴の中に入れます!正しいやり方は:
var arr = [10, 20, 1, 2];
arr.sort(function (x, y) {
    if (x < y) {
        return -1;
    }
    if (x > y) {
        return 1;
    }
    return 0;
}); // [1, 2, 10, 20]
大文字と小文字の比較アルゴリズムを無視します.
var arr = ['Google', 'apple', 'Microsoft'];
arr.sort(function (s1, s2) {
    x1 = s1.toUpperCase();
    x2 = s2.toUpperCase();
    if (x1 < x2) {
        return -1;
    }
    if (x1 > x2) {
        return 1;
    }
    return 0;
}); // ['apple', 'Google', 'Microsoft']
sort()方法は、Arrayを直接修正し、その結果は、現在のArrayであることに留意されたい.
var a1 = ['B', 'A', 'C'];
var a2 = a1.sort();
a1; // ['A', 'B', 'C']
a2; // ['A', 'B', 'C']
a1 === a2; // true, a1 a2