數(shù)組Array的排序sort方法
JavaScript中的Array對(duì)象有自己的排序方法sort(),對(duì)數(shù)組中的數(shù)據(jù)項(xiàng)進(jìn)行排序,但是有時(shí)候排序結(jié)果不盡如人意,比如
var arr = [12, 1, 2, 21, 3]; arr.sort(); alert(arr); 得到的結(jié)果為 1,12,2,21,3
這是為什么呢?因?yàn)镴avaScript中的排序默認(rèn)按照ascii字符代碼進(jìn)行排序,也就是說(shuō),數(shù)字也是按照它們的字符串形式排序的。
var strArr = ['a', '2', 'a2', '2a', 'b', '3']; alert(strArr.sort());
這個(gè)得到什么結(jié)果呢? 2,2a,3,a,a2,b
因?yàn)?數(shù)字的ascii碼比字母的小,所以數(shù)字排在前面,字母排在后面。
如果想繼續(xù)讓上面的數(shù)組arr按照數(shù)字進(jìn)行排序,怎么處理呢?
JavaScript給我們提供了一個(gè)入口,可以給sort() 方法傳遞一個(gè)參數(shù),即比較函數(shù),來(lái)告訴排序算法值與值之間是大于、小于還是等于關(guān)系。
比較函數(shù)是有著特定算法的函數(shù)。
function compare_fn(value1, value2) {
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
}
將比較函數(shù) compare_fn 傳遞給sort,再進(jìn)行排序,然后輸出
arr.sort(compare_fn); alert(arr); 得到 1, 2, 3, 12, 21
JavaScript中Array對(duì)象的sort方法返回值的定義為
負(fù)值 : 如果所傳遞的第一個(gè)參數(shù)比第二個(gè)參數(shù)小
零 : 兩個(gè)值相等
正值 : 如果第一個(gè)參數(shù)比第二個(gè)參數(shù)大
上面的比較函數(shù)還可以簡(jiǎn)寫(xiě)為
function compare_fn(value1, value2) {
return value1 - value2;
}
這個(gè)比較的為升序排列
如果想降序排列,直接改變上面的返回值的符號(hào)就可以了,給所有返回均取反。
對(duì)簡(jiǎn)寫(xiě)的比較函數(shù)就是
function compare_fn(value1, value2) {
return -(value1 - value2);
}
即
function compare_fn(value1, value2) {
return value2 - value1;
}
簡(jiǎn)單的記法就是:順序升;逆序降。
以上這篇數(shù)組Array的排序sort方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
js 獲取站點(diǎn)應(yīng)用名的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇js 獲取站點(diǎn)應(yīng)用名的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
CocosCreator經(jīng)典入門(mén)項(xiàng)目之flappybird
這篇文章主要介紹了CocosCreator經(jīng)典入門(mén)項(xiàng)目之flappybird,詳細(xì)說(shuō)明了制作的每個(gè)步驟,還有詳盡的代碼,對(duì)CocosCreator感興趣的同學(xué),一定要看一下2021-04-04
微信 java 實(shí)現(xiàn)js-sdk 圖片上傳下載完整流程
這篇文章主要介紹了微信 java 實(shí)現(xiàn)js-sdk 圖片上傳下載完整流程的相關(guān)資料,需要的朋友可以參考下2016-10-10
javascript框架設(shè)計(jì)讀書(shū)筆記之種子模塊
本文是司徒正美的《javascript框架設(shè)計(jì)》一書(shū)第一章種子模塊的讀書(shū)筆記,記錄了一下自認(rèn)為比較重要的東西,分享給大家2014-12-12
前端JS,刪除JSON數(shù)據(jù)(JSON數(shù)組)中的指定元素方式
這篇文章主要介紹了前端JS,刪除JSON數(shù)據(jù)(JSON數(shù)組)中的指定元素方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
javascript支持firefox,ie7頁(yè)面布局拖拽效果代碼
javascript 拖拽 頁(yè)面拖拽 拖拽效果的頁(yè)面 超級(jí)拖拽 javascript支持firefox,ie7頁(yè)面布局拖拽效果代碼 鼠標(biāo)拖拽2007-12-12
Js Snowflake(雪花算法)生成隨機(jī)ID的實(shí)現(xiàn)方法
這篇文章主要介紹了Js Snowflake(雪花算法)生成隨機(jī)ID的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
uniapp上傳圖片和上傳視頻的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于uniapp上傳圖片和上傳視頻的實(shí)現(xiàn)方法,文中還介紹了上傳文件的方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
在B/S開(kāi)發(fā)中經(jīng)常用到的JavaScript技術(shù)
javascript運(yùn)用中,經(jīng)常用到的代碼,建議每段代碼都要看下,注意本文有三頁(yè),仔細(xì)看玩,逐個(gè)研究透徹,那么網(wǎng)頁(yè)中常見(jiàn)的問(wèn)題,你也就熟悉掌握了2008-05-05
快速解決layui彈窗按enter鍵不停彈窗的問(wèn)題
今天小編就為大家分享一篇快速解決layui彈窗按enter鍵不停彈窗的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09

