本篇主要是对 js 二维数组排序的简单示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
如下所示:
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <title> New Document </title>
- <meta name="Generator" content="EditPlus">
- <meta name="Author" content="">
- <meta name="Keywords" content="">
- <meta name="Description" content="">
- <script type="text/javascript">
- <!--
- function getCard(m){
- var ret = [], rnd;
- for(var i = 0; i < m; i++){
- rnd = Math.floor(Math.random()*(i+0.9999));
- ret[i] = ret[rnd];
- ret[rnd] = i
- }
- return ret;
- }
- var data = [];
- {
- for(var i = 0; i < 100; i ++){
- data.push(getCard(10));
- }
- }
- // 二维数据排序
- function mySort(array, col, ord, b, e){
- if(array.length == 0) return;
- //document.write("排序前"+array);
- var t = [], s, i, curCol = col[0];
- for(i = b; i < e; i ++){
- s = new String(array[i][curCol]);
- s._obj = array[i];
- t.push(s)
- }
- t.sort();
- if(ord[0] == "des"){
- t.reverse();
- }
- for(i = 0; i < e - b; i++){
- //document.write("<br/>");
- //document.write(array[i]);
- //document.write("<br/>");
- //document.write(t[i]._obj);
- //document.write("<br/>");
- //document.write(t[i]._obj == array[b+i]);
- array[b+i] = t[i]._obj;
- }
- //document.write("排序后====================<br/>")
- //print(array);
- var begin, end;
- if(col.length > 1){
- col.shift();
- ord.shift();
- begin = b;
- for(i = b; i < e - b - 1; i++){
- if( array[i][curCol] != array[i+1][curCol] ){
- end = i+1;
- //document.write("begin="+begin+"end="+end+"<br/>");
- mySort(array,col,ord,begin,end);
- begin = end;
- }
- }
- if(begin != e){
- mySort(array,col,ord,begin,e);
- }
- }
//document.write("
");
//document.write("排序后"+array);
}
function print(data){
for(var i = 0; i < data.length; i++){
document.write(data[i]+"
");
}
}
document.write(" 排序前 ====================
");
print(data);
var b = new Date().getTime();;
mySort(data, [0,1,2],['asc','des','asc'],0,data.length);
document.write("用时"+(new Date().getTime() - b));
document.write(" 排序后 ====================
")
print(data);
//-->
来源: