zhenguilin / javascript-note

Here are some notes for javascript
https://github.com/zhenguilin/javascript-note
0 stars 0 forks source link

sort #13

Open zhenguilin opened 6 years ago

zhenguilin commented 6 years ago

通常规定,对于两个元素x和y,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。

Array的sort()方法默认把所有元素先转换为String再排序

sort()方法会直接对Array进行修改,它返回的结果仍是当前Array

zhenguilin commented 6 years ago

要按数字大小排序,我们可以这么

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]
zhenguilin commented 6 years ago

该忽略大小写排序

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']