国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Javascript數組的排序 sort()方法和reverse()方法

2024-05-06 14:21:47
字體:
來源:轉載
供稿:網友
其中:

1.JavaScript的sort()中如果沒有指定比較函數,則默認會按照字符的編碼順序進行升序排序。也就是說如果我們想要對數值進行排序得到的不一定是我們想要的結果。

2.Javascript的reverse()將數組中的元素逆序。

先看看上面的第一點,如果有一個數組arr=[1,6,3,7,9],使用arr.sort()后,數組的順序為1,3,6,7,9,得到了我們想要的結果。

再看看下面的一個數組排序:arr=[3,1,16,34,30],如果執行arr.sort()后是不是還是會得到我們想要的1,3,16,30,34呢?

執行后我們發現結果為:1,16,3,30,34,顯然結果不是我們想要的。實際上,sort方法將上面的數值按照字符串方式排序了,也就是說和數組arr1=['3','1','16','34','30']的排序結果一致。

代碼如下:
代碼如下:
var arr=[3,1,16,34,30];
var arr1=['3','1','16','34','30'];
alert(arr.sort()); // 1,16,3,30,34
alert(arr1.sort()); // 1,16,3,30,34


那么如果我們想要得到正確的結果:1,3,16,30,34 應該怎么去做呢?

查詢javascript手冊,手冊中的說明如下:

定義和用法

sort() 方法用于對數組的元素進行排序。

語法

arrayObject.sort(sortby)參數 描述
sortby 可選。規定排序順序。必須是函數。

返回值

對數組的引用。請注意,數組在原數組上進行排序,不生成副本。

說明

如果調用該方法時沒有使用參數,將按字母順序對數組中的元素進行排序,說得更精確點,是按照字符編碼的順序進行排序。要實現這一點,首先應把數組的元素都轉換成字符串(如有必要),以便進行比較。

如果想按照其他標準進行排序,就需要提供比較函數,該函數要比較兩個值,然后返回一個用于說明這兩個值的相對順序的數字。比較函數應該具有兩個參數 a 和 b,其返回值如下:

若 a 小于 b,在排序后的數組中 a 應該出現在 b 之前,則返回一個小于 0 的值。
若 a 等于 b,則返回 0。
若 a 大于 b,則返回一個大于 0 的值。
=====================================

由以上說明我們可以了解到,如果要按照數值進行排序,那么就要提供一個比較函數。一般常見的比較函數如下:
代碼如下:
function sortArr(m,n){
if(m<n)
return -1;//小于,返回-1
else if(m>n)
return 1;//大于,返回1
else return 0;//等于,返回0
}

精簡后可以寫成如下兩種形式:
代碼如下:
function sortArr(m,n){
return m-n;
}

代碼如下:
function sortArr(m,n){
return m>n?1:(m<n?-1:0);
}

然后執行arr.sort(sortArr),發現可以得到我們想要的結果:1,3,16,30,34.也就說將數組按照整型數值進行了升序排序。
這樣的話新的問題就來了,如果我們想要對數組進行降序排序怎么做呢?
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 汶上县| 金寨县| 汕尾市| 长顺县| 广南县| 望谟县| 阆中市| 泰安市| 万载县| 灌云县| 淅川县| 萨迦县| 玛沁县| 大连市| 浏阳市| 安康市| 林周县| 安溪县| 奉化市| 海口市| 漳浦县| 若尔盖县| 改则县| 洛阳市| 新竹市| 四川省| 阿尔山市| 略阳县| 秦皇岛市| 关岭| 安达市| 威远县| 泰州市| 高邮市| 商洛市| 龙海市| 鄄城县| 油尖旺区| 丹棱县| 鄂伦春自治旗| 广东省|