JavaScript對(duì)象數(shù)組的排序處理方法
本文實(shí)例講述了JavaScript對(duì)象數(shù)組的排序處理方法。分享給大家供大家參考,具體如下:
javascript的數(shù)組排序函數(shù) sort方法,默認(rèn)是按照ASCII 字符順序進(jìn)行升序排列。
arrayobj.sort(sortfunction);
參數(shù):sortFunction
可選項(xiàng)。是用來(lái)確定元素順序的函數(shù)的名稱(chēng)。如果這個(gè)參數(shù)被省略,那么元素將按照 ASCII 字符順序進(jìn)行升序排列。
sort 方法將 Array 對(duì)象進(jìn)行適當(dāng)?shù)呐判颍辉趫?zhí)行過(guò)程中并不會(huì)創(chuàng)建新的 Array 對(duì)象。
如果為 sortfunction 參數(shù)提供了一個(gè)函數(shù),那么該函數(shù)必須返回下列值之一:
負(fù)值,如果所傳遞的第一個(gè)參數(shù)比第二個(gè)參數(shù)小。
零,如果兩個(gè)參數(shù)相等。
正值,如果第一個(gè)參數(shù)比第二個(gè)參數(shù)大。
以上的方法在一維的排序還是很方便的,但像SQL語(yǔ)句中的ORDER BY 一樣的多鍵值排序由怎么做呢?
多維數(shù)組的多鍵值排序,則需要復(fù)雜一些,但不需要用循環(huán)解決。實(shí)際解決的道理是一樣的 。
數(shù)字:
以下的例子是將數(shù)字的多維數(shù)組按照第5列,第9列,第3列的順序排序,像SQL語(yǔ)句中的ORDER BY col5,col9,col7。數(shù)字的時(shí)候可以直接兩個(gè)項(xiàng)目相減,以結(jié)果作為返回值即可。
<script language=javascript>
var myArray = new Array();
for(var i=0;i<10;i++ ){
myArray[i]=new Array();
myArray[i][0]=Math.floor(Math.random()*10);
myArray[i][1]=Math.floor(Math.random()*10);
myArray[i][2]=Math.floor(Math.random()*10);
myArray[i][3]=Math.floor(Math.random()*10);
myArray[i][4]=Math.floor(Math.random()*10);
myArray[i][5]=Math.floor(Math.random()*10);
myArray[i][6]=Math.floor(Math.random()*10);
myArray[i][7]=Math.floor(Math.random()*10);
myArray[i][8]=Math.floor(Math.random()*10);
}
myArray.sort(
function(x, y) {
if(x[4]!=y[4]){
return x[4]-y[4];
} else if(x[8]!=y[8]){
return x[8]-y[8];
} else if(x[6]!=y[6]){
return x[6]-y[6];
} else {
return 1;
}
}
);
for(var i=0;i<myArray.length;i++ )...{
document.write(myArray[i].join(",") + "<br/>");
}
</script>
字符:
字符的時(shí)候sortFunction中的項(xiàng)目不能像數(shù)字一樣直接相減,需要調(diào)用str1.localeCompare( str2 )方法來(lái)作比較,從而滿(mǎn)足返回值。以下是多維數(shù)組的第1,2列作排序的情況。
function sortFunction(array) {
return array.sort( function(x, y) ...{
return (x[0]==y[0])?(x[1].localeCompare(y[1])):(x[0].localeCompare(y[0]))
});
}
因此arrayObject.sort( sortFunction )的排序功能還是很強(qiáng)大的,終于能夠?qū)崿F(xiàn)了SQL語(yǔ)句中的ORDER BY 一樣的功能。
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
基于Javascript實(shí)現(xiàn)彈出頁(yè)面效果
彈出層效果是一個(gè)很實(shí)用的功能,很多網(wǎng)站都采用了這種方式實(shí)現(xiàn)登錄和注冊(cè),下面小編通過(guò)本文給大家分享具體實(shí)現(xiàn)代碼,對(duì)js彈出頁(yè)面效果相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-01-01
iframe的父子窗口之間的對(duì)象相互調(diào)用基本用法
iframe在使用時(shí)可能會(huì)涉及到父子窗口之間傳值和方法的相互調(diào)用,研究了一下其實(shí)非常簡(jiǎn)單,就那么幾個(gè)用法而已,在此與大家分享下,感興趣的朋友可以參考下2013-09-09
微信小程序?qū)崿F(xiàn)左側(cè)導(dǎo)航欄
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)左側(cè)導(dǎo)航欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
使用Vite從零搭建前端項(xiàng)目的詳細(xì)過(guò)程
這篇文章主要介紹了使用Vite從零搭建前端項(xiàng)目的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
JavaScript中的this指向綁定規(guī)則及常見(jiàn)面試總結(jié)
這篇文章主要為大家介紹了JavaScript中的this指向綁定規(guī)則及箭頭韓碩中的this指向,還b包含了常見(jiàn)面試總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
JS實(shí)現(xiàn)帶有3D立體感的銀灰色豎排折疊菜單代碼
這篇文章主要介紹了JS實(shí)現(xiàn)帶有3D立體感的銀灰色豎排折疊菜單代碼,可實(shí)現(xiàn)基本的JS響應(yīng)鼠標(biāo)事件動(dòng)態(tài)展開(kāi)與折疊菜單欄的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10

