欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2012年06月04日 15:23:28   作者:  
JavaScript提供了sort()方法和reverse()方法,使得我們可以簡單的對(duì)數(shù)組進(jìn)行排序操作和逆序操作
其中:

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

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

先看看上面的第一點(diǎn),如果有一個(gè)數(shù)組arr=[1,6,3,7,9],使用arr.sort()后,數(shù)組的順序?yàn)?,3,6,7,9,得到了我們想要的結(jié)果。

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

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

代碼如下:
復(fù)制代碼 代碼如下:

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


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

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

定義和用法

sort() 方法用于對(duì)數(shù)組的元素進(jìn)行排序。

語法

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

返回值

對(duì)數(shù)組的引用。請(qǐng)注意,數(shù)組在原數(shù)組上進(jìn)行排序,不生成副本。

說明

如果調(diào)用該方法時(shí)沒有使用參數(shù),將按字母順序?qū)?shù)組中的元素進(jìn)行排序,說得更精確點(diǎn),是按照字符編碼的順序進(jìn)行排序。要實(shí)現(xiàn)這一點(diǎn),首先應(yīng)把數(shù)組的元素都轉(zhuǎn)換成字符串(如有必要),以便進(jìn)行比較。

如果想按照其他標(biāo)準(zhǔn)進(jìn)行排序,就需要提供比較函數(shù),該函數(shù)要比較兩個(gè)值,然后返回一個(gè)用于說明這兩個(gè)值的相對(duì)順序的數(shù)字。比較函數(shù)應(yīng)該具有兩個(gè)參數(shù) a 和 b,其返回值如下:

若 a 小于 b,在排序后的數(shù)組中 a 應(yīng)該出現(xiàn)在 b 之前,則返回一個(gè)小于 0 的值。
若 a 等于 b,則返回 0。
若 a 大于 b,則返回一個(gè)大于 0 的值。
=====================================

由以上說明我們可以了解到,如果要按照數(shù)值進(jìn)行排序,那么就要提供一個(gè)比較函數(shù)。一般常見的比較函數(shù)如下:
復(fù)制代碼 代碼如下:

function sortArr(m,n){
if(m<n)
return -1;//小于,返回-1
else if(m>n)
return 1;//大于,返回1
else return 0;//等于,返回0
}

精簡后可以寫成如下兩種形式:
復(fù)制代碼 代碼如下:

function sortArr(m,n){
return m-n;
}

復(fù)制代碼 代碼如下:

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

然后執(zhí)行arr.sort(sortArr),發(fā)現(xiàn)可以得到我們想要的結(jié)果:1,3,16,30,34.也就說將數(shù)組按照整型數(shù)值進(jìn)行了升序排序。
這樣的話新的問題就來了,如果我們想要對(duì)數(shù)組進(jìn)行降序排序怎么做呢?

有一思路就是改變sortArr函數(shù)的返回值,如果m<n時(shí)返回正直,m>n時(shí)返回負(fù)值,m=n時(shí)返回0。這樣就可以了。

你可以寫兩個(gè)函數(shù),一個(gè)升序,一個(gè)降序。然后根據(jù)不同的需要調(diào)用不同的函數(shù)就可以了。

此外我們還可以調(diào)用上面提到的另一個(gè)函數(shù)reverse()來輕松的實(shí)現(xiàn),當(dāng)我們進(jìn)行升序排序后,然后數(shù)組在調(diào)用reverse()方法將數(shù)組逆序,這樣就可以實(shí)現(xiàn)數(shù)組的降序排序了。

代碼如下:
復(fù)制代碼 代碼如下:

arr.sort(sortArr).reverse();

總結(jié):這里主要介紹了Javascript中數(shù)組的排序,由于默認(rèn)按照字符串排序,要實(shí)現(xiàn)按照其他形式的規(guī)則排序就要自己定義比較函數(shù)了。

相關(guān)文章

  • video.js 實(shí)現(xiàn)視頻只能后退不能快進(jìn)的思路詳解

    video.js 實(shí)現(xiàn)視頻只能后退不能快進(jìn)的思路詳解

    這篇文章主要介紹了video.js 實(shí)現(xiàn)視頻只能后退不能快進(jìn)的思路詳解,主要思路是點(diǎn)擊進(jìn)度條需要獲取拖動(dòng)前的時(shí)間點(diǎn),具體實(shí)例代碼大家跟隨小編一起看看吧
    2018-08-08
  • JMenuTab簡單使用說明

    JMenuTab簡單使用說明

    JMenuTab簡單使用說明參數(shù)
    2008-03-03
  • Bootstrap禁用響應(yīng)式布局的實(shí)現(xiàn)方法

    Bootstrap禁用響應(yīng)式布局的實(shí)現(xiàn)方法

    這篇文章主要介紹了Bootstrap禁用響應(yīng)式布局的實(shí)現(xiàn)方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • JS字符串處理實(shí)例代碼

    JS字符串處理實(shí)例代碼

    這篇文章介紹了JS字符串處理實(shí)例代碼,有需要的朋友可以參考一下
    2013-08-08
  • 原生js jquery ajax請(qǐng)求以及jsonp的調(diào)用方法

    原生js jquery ajax請(qǐng)求以及jsonp的調(diào)用方法

    下面小編就為大家?guī)硪黄鷍s jquery ajax請(qǐng)求以及jsonp的調(diào)用方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • javascript 支持頁碼格式的分頁類

    javascript 支持頁碼格式的分頁類

    前端時(shí)間因?yàn)轫?xiàng)目需要,要對(duì)一個(gè)產(chǎn)品下所有的附屬圖片進(jìn)行分頁顯示,沒考慮ajax一張張請(qǐng)求,所以干脆一次性全部把圖片out,然后在載入的時(shí)候進(jìn)行分頁,網(wǎng)上很多jquery,property等都實(shí)現(xiàn)了
    2009-12-12
  • 微信小程序上傳帖子的實(shí)例代碼(含有文字圖片的微信驗(yàn)證)

    微信小程序上傳帖子的實(shí)例代碼(含有文字圖片的微信驗(yàn)證)

    這篇文章主要介紹了小程序上傳帖子(含有文字圖片的微信驗(yàn)證)的實(shí)例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • javascript void(0)的妙用

    javascript void(0)的妙用

    JavaScript中void是一個(gè)操作符,該操作符指定要計(jì)算一個(gè)表達(dá)式但是不返回值。
    2009-10-10
  • JSONP解決同源策略限制引起跨域問題原理

    JSONP解決同源策略限制引起跨域問題原理

    這篇文章主要為大家介紹了JSONP解決同源策略限制引起跨域問題原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • JavaScript制作游戲搖桿方向盤

    JavaScript制作游戲搖桿方向盤

    本文主要介紹了JavaScript制作游戲搖桿方向盤,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2014-04-04

最新評(píng)論