IT学习者 | 文章大全 | 技术文档 | 桌面壁纸 | 网络电台 | 成语 | 歇后语 | 站长导航 | 下载 | 周公解梦 | 生日密码 | 站长助手 | Flash | IP地址查询
 您现在的位置: IT学习者 >> 文章大全 >> 网络编程 >> ajax

JavaScript实现多维数组多键值排序方法

【 来源:网络  更新时间:2008-2-11 | 字体:

  javascript的数组排序函数 sort方法,默认是按照ASCII 字符顺序进行升序排列。

  arrayobj.sort(sortfunction);

  参数:sortFunction

  可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。

  sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。

  如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:

  负值,如果所传递的第一个参数比第二个参数小。

  零,如果两个参数相等。

  正值,如果第一个参数比第二个参数大。

  以上的方法在一维的排序还是很方便的,但像SQL语句中的ORDER BY 一样的多键值排序由怎么做呢?

  多维数组的多键值排序,则需要复杂一些,但不需要用循环解决。实际解决的道理是一样的 。

  数字:

  以下的例子是将数字的多维数组按照第5列,第9列,第3列的顺序排序,像SQL语句中的ORDER BY col5,col9,col7。数字的时候可以直接两个项目相减,以结果作为返回值即可。

<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) ...{
    return (x[0]==y[0])?((x[4]==y[4])?(x[8]-y[8]):(x[4]-y[4])):(x[2]-y[2])
  });
  for(var i=0;i<myArray.length;i++ )...{
    document.write(myArray[i].join(",") + "<br/>");
  }
</script>

  字符:

  字符的时候sortFunction中的项目不能像数字一样直接相减,需要调用

  str1.localeCompare( str2 )方法来作比较,从而满足返回值。以下是多维数组的第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 )的排序功能还是很强大的,终于能够实现了SQL语句中的ORDER BY 一样的功能。

相 关 文 章
相 关 软 件

音乐
嫁衣 画心 放生 天亮了 牡丹江 那滋味 擦肩而过 怀念过去 北京欢迎你 突然好想你 吻的太逼真 说好的幸福呢 坐上火车去拉萨 没有人比我更爱你
愚爱 心碎 稻香 带我走 醉赤壁 魔杰座 我还想她 明天过后 一定要爱你 等爱的玫瑰 原谅我一次 越单纯越幸福 最后一次的温柔 给我一首歌的时间
白狐 光荣 降临 下雨天 小酒窝 樱花草 恋爱新手 说唱脸谱 红色高跟鞋 寂寞才说爱 深深爱过你 爱上你是个错 即使知道要见面 不是因为寂寞才想你
城府 假如 花海 兰亭序 棉花糖 舍不得 最后一次 女人如烟 外滩十八号 我们的纪念 我们的无奈 心在跳情在烧 爱上你是我的错 爱情里没有谁对谁错
加入收藏留言建议自助友情链接普通友情链接站长的Blog
版权所有   COPYRIGHT 2002-2009 ★IT学习者★ ALL RIGHTS RESERVED.