定义和用法
sort() 方法用于对数组的元素进行排序。
语法
arrayObject.sort(sortby)
参数 描述
sortby 可选。规定排序顺序。必须是函数。
返回值
对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
说明
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 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>
HTMLTableElement:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement
JS:
- <script type=“text/javascript”>
- function sortTable(tableId,col,dataType){
- var mtable = $(‘table#’+tableId);
- var mtrs = new Array;
- for(var i = 0;i<mtable[0].rows.length;i++){
- mtrs.push(mtable[0].rows[i]);
- }
- //alert(mtable);
- $.each(mtrs, function(index,row){
- //alert($(this).find(“.”+col,mtable).html());
- row.sortKey = $(this).find(“.”+col,mtable).html();
- });
- mtrs.sort(function(a,b){
- // alert(a);
- // alert(b);
- mtra = dataConvert(a.sortKey,dataType);
- mtrb = dataConvert(b.sortKey,dataType);
- if(mtra < mtrb){
- return -1;
- }else if(mtra > mtrb){
- return 1;
- }else{
- return 0;
- }
- });
- $.each( mtrs, function( index, row ){
- mtable.children(‘tbody’).append(row);
- row.sortKey = null;
- });
- jQuery.fn.alterRowClass = function()
- {
- $(‘tbody tr:odd’, this).removeClass(‘uneven’).addClass(‘even’);
- $(‘tbody tr:even’, this).removeClass(‘even’).addClass(‘uneven’);
- return this;
- }
- mtable.alterRowClass();
- }
- function dataConvert(mValue,dataType){
- switch (dataType) {
- case “int”:
- return parseInt(mValue);
- case “ip”:
- return ip2int(mValue);
- case “user”:
- return mValue.toString();
- case “date”:
- return new Date(Date.parse(mValue));
- default :
- return mValue.toString();
- }
- }
- function ip2int(ip){
- var num = 0;
- ip = ip.split(“.”);
- num = Number(ip[0]) 256 256 256 + Number(ip[1]) 256 256 + Number(ip[2]) 256 + Number(ip[3]);
- return num;
- }
- </script>
HTML:
- <span onclick = “sortTable(‘baklist’,$(this).attr(‘class’),’ip’);” class=“row_5”><?php echo $L[‘DATA_ADDRESS’]; ?></span>