JavaScript對象數(shù)組的排序處理方法
本文實例講述了JavaScript對象數(shù)組的排序處理方法。分享給大家供大家參考,具體如下:
javascript的數(shù)組排序函數(shù) sort方法,默認(rèn)是按照ASCII 字符順序進(jìn)行升序排列。
arrayobj.sort(sortfunction);
參數(shù):sortFunction
可選項。是用來確定元素順序的函數(shù)的名稱。如果這個參數(shù)被省略,那么元素將按照 ASCII 字符順序進(jìn)行升序排列。
sort 方法將 Array 對象進(jìn)行適當(dāng)?shù)呐判?;在?zhí)行過程中并不會創(chuàng)建新的 Array 對象。
如果為 sortfunction 參數(shù)提供了一個函數(shù),那么該函數(shù)必須返回下列值之一:
負(fù)值,如果所傳遞的第一個參數(shù)比第二個參數(shù)小。
零,如果兩個參數(shù)相等。
正值,如果第一個參數(shù)比第二個參數(shù)大。
以上的方法在一維的排序還是很方便的,但像SQL語句中的ORDER BY 一樣的多鍵值排序由怎么做呢?
多維數(shù)組的多鍵值排序,則需要復(fù)雜一些,但不需要用循環(huán)解決。實際解決的道理是一樣的 。
數(shù)字:
以下的例子是將數(shù)字的多維數(shù)組按照第5列,第9列,第3列的順序排序,像SQL語句中的ORDER BY col5,col9,col7。數(shù)字的時候可以直接兩個項目相減,以結(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>
字符:
字符的時候sortFunction中的項目不能像數(shù)字一樣直接相減,需要調(diào)用str1.localeCompare( str2 )方法來作比較,從而滿足返回值。以下是多維數(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語句中的ORDER BY 一樣的功能。
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
javascript數(shù)組按屬性分組實現(xiàn)方法
在開發(fā)過程中,前端有時需要對后端返回的數(shù)據(jù)進(jìn)行一些處理,當(dāng)后端返回給我們json對象數(shù)組時,我們可能會需要按照對象中的某一個屬性來進(jìn)行分組,下面這篇文章主要給大家介紹了關(guān)于javascript數(shù)組按屬性分組的實現(xiàn)方法,需要的朋友可以參考下2023-05-05動態(tài)加載外部javascript文件的函數(shù)代碼分享
動態(tài)加載外部javascript文件的函數(shù)代碼分享,做個記錄備忘,方便查找。2011-07-07js+html5實現(xiàn)canvas繪制簡單矩形的方法
這篇文章主要介紹了js+html5實現(xiàn)canvas繪制簡單矩形的方法,涉及html5圖形繪制的基本技巧,需要的朋友可以參考下2015-06-06詳解webpack 入門總結(jié)和實踐(按需異步加載,css單獨(dú)打包,生成多個入口文件)
本篇文章主要介紹了webpack 入門總結(jié)和實踐(按需異步加載,css單獨(dú)打包,生成多個入口文件) ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06