JavaScript的排序問題

根據javascript的手冊,將sort()方法進行運算,結果

<script>
    var arr = [2,3,56,12,546,77,98];
    alert(arr.sort());
</script>

l根據javascript的手冊,將sort()方法進行運算,結果如下:

 spacer.gifwKioL1gBuWnA2DZMAAAUYBtebl4779.png-wh_50

可以看到這並不是我們需要的排序,於是根據手冊的提示:

如果爲 sortfunction 參數提供了一個函數,那麼該函數必須返回下列值之一:

  • 負值,如果所傳遞的第一個參數比第二個參數小。

  • 零,如果兩個參數相等。

  • 正值,如果第一個參數比第二個參數大。


於是我封裝一個函數demosort()

<script>
    var arr = [2,3,56,12,546,77,98];
    arr.sort(function demosort(x, y){
        if (x< y) {
            return -1;              //小於,返回-1     
        } else if (x > y) {
            return 1;                    //大於返回1
        } else {                    //其他,返回 0
            return 0;
        }
    });
    alert(arr);
</script>

這樣的話,再次通過sort()函數即可實現正確的排序。

結果如下:

spacer.gifwKiom1gBuYqD7wPqAAAcWEQp-rI739.png-wh_50


這樣就實現了真正意義上的排序。至於逆序可以將返回值相反,或者直接使用 reverse()函數。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章