課程
/前端開發(fā)
/JavaScript
/JavaScript進(jìn)階篇
()里面的a,b是什么?函數(shù)也沒在下面調(diào)用啊?
2014-12-22
源自:JavaScript進(jìn)階篇 7-22
正在回答
看了些資料,初淺的理解可以這樣:
sort()函數(shù),要實(shí)現(xiàn)特定排序的話,函數(shù)要求提供一個(gè)(比較函數(shù)做為)參數(shù),該(函數(shù))參數(shù) 要有兩個(gè)比較值,而且需要返回值,用于說明這兩個(gè)值的相對(duì)順序的數(shù)字。這個(gè)比較函數(shù)的兩個(gè)參數(shù)可以是 a 和 b,或者 x和y ,是象征意義,至于sort()函數(shù)拿到這個(gè)參數(shù)(比較函數(shù))怎么內(nèi)部處理,是系統(tǒng)內(nèi)部的事,我們暫且不用關(guān)心,知道這么用就可以了
兩位的回答都有可取的地方,第一位的簡(jiǎn)單明了,第二位略顯專業(yè)。。。
唉,樓上說的有錯(cuò)誤。
“當(dāng)函數(shù)返回值為1的時(shí)候就交換兩個(gè)數(shù)組項(xiàng)的順序,否則就不交換”這句話絕對(duì)是錯(cuò)的。
arrayObject.sort(sortby)?
sortby ? ?可選。規(guī)定排序順序。必須是函數(shù)。 ? ?
返回值
對(duì)數(shù)組的引用。請(qǐng)注意,數(shù)組在原數(shù)組上進(jìn)行排序,不生成副本(也就是說原數(shù)組會(huì)發(fā)生改變)。
說明
如果調(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 的值。
<script type="text/javascript">function sortNumber(a,b){? return a - b}var arr = new Array(6)????arr[0] = "10"????arr[1] = "5"????arr[2] = "40"????arr[3] = "25"????arr[4] = "1000"????arr[5] = "1"document.write(arr + "<br />")document.write(arr.sort(sortNumber))</script>
輸出:
10,5,40,25,1000,11,5,10,25,40,1000
menghuanbaolei
sort()排序時(shí)每次比較兩個(gè)數(shù)組項(xiàng)都回執(zhí)行這個(gè)參數(shù),并把兩個(gè)比較的數(shù)組項(xiàng)作為參數(shù)傳遞 給這個(gè)函數(shù)。當(dāng)函數(shù)返回值為1的時(shí)候就交換兩個(gè)數(shù)組項(xiàng)的順序,否則就不交換。這里是涉及到算法的,你可以在網(wǎng)上搜一些算法題自己先了解一下算法
舉報(bào)
本課程從如何插入JS代碼開始,帶您進(jìn)入網(wǎng)頁動(dòng)態(tài)交互世界
3 回答求解function sortNum(a,b)
1 回答sort(sortNum)函數(shù)
3 回答functuon sortNum()函數(shù)
4 回答數(shù)組里的sort 自定義函數(shù)function sortNum(a,b) { return b-a; }
1 回答函數(shù)sortNum問題
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2015-05-04
看了些資料,初淺的理解可以這樣:
sort()函數(shù),要實(shí)現(xiàn)特定排序的話,函數(shù)要求提供一個(gè)(比較函數(shù)做為)參數(shù),該(函數(shù))參數(shù) 要有兩個(gè)比較值,而且需要返回值,用于說明這兩個(gè)值的相對(duì)順序的數(shù)字。這個(gè)比較函數(shù)的兩個(gè)參數(shù)可以是 a 和 b,或者 x和y ,是象征意義,至于sort()函數(shù)拿到這個(gè)參數(shù)(比較函數(shù))怎么內(nèi)部處理,是系統(tǒng)內(nèi)部的事,我們暫且不用關(guān)心,知道這么用就可以了
2014-12-23
兩位的回答都有可取的地方,第一位的簡(jiǎn)單明了,第二位略顯專業(yè)。。。
2014-12-23
唉,樓上說的有錯(cuò)誤。
“當(dāng)函數(shù)返回值為1的時(shí)候就交換兩個(gè)數(shù)組項(xiàng)的順序,否則就不交換”這句話絕對(duì)是錯(cuò)的。
arrayObject.sort(sortby)?
sortby ? ?可選。規(guī)定排序順序。必須是函數(shù)。 ? ?
返回值
對(duì)數(shù)組的引用。請(qǐng)注意,數(shù)組在原數(shù)組上進(jìn)行排序,不生成副本(也就是說原數(shù)組會(huì)發(fā)生改變)。
說明
如果調(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 的值。
<script type="text/javascript">
function sortNumber(a,b)
{
? return a - b
}
var arr = new Array(6)
????arr[0] = "10"
????arr[1] = "5"
????arr[2] = "40"
????arr[3] = "25"
????arr[4] = "1000"
????arr[5] = "1"
document.write(arr + "<br />")
document.write(arr.sort(sortNumber))
</script>
輸出:
10,5,40,25,1000,1
1,5,10,25,40,1000
2014-12-23
sort()排序時(shí)每次比較兩個(gè)數(shù)組項(xiàng)都回執(zhí)行這個(gè)參數(shù),并把兩個(gè)比較的數(shù)組項(xiàng)作為參數(shù)傳遞 給這個(gè)函數(shù)。當(dāng)函數(shù)返回值為1的時(shí)候就交換兩個(gè)數(shù)組項(xiàng)的順序,否則就不交換。這里是涉及到算法的,你可以在網(wǎng)上搜一些算法題自己先了解一下算法