有一个二维表格,表格中的每一列分别有一个列名,表格中的数据为数字类型,要求编写一个程序,能够按照用户指定的列顺序以及每个列的升降序进行排序。
(1) 语言不限
(2) 表格中的列数目不限(1-n )
(3) 排序的列数目不限(0-n )
(4) 变量的命名和使用要符合学习的内容
例如:
Id Age Score1 Score2 Score3
1 20 45 56 67
3 33 12 98 100
…..
7 77 33 12 91
用户可以指定按照Age(升序),Score2(降序)的顺序对数据进行排序。
代码如下:
这样的代码似乎有些格路。但还是让我学到了些东西。
用Comparator这个接口来做应该更标准一些,有时间再试试吧。
(1) 语言不限
(2) 表格中的列数目不限(1-n )
(3) 排序的列数目不限(0-n )
(4) 变量的命名和使用要符合学习的内容
例如:
Id Age Score1 Score2 Score3
1 20 45 56 67
3 33 12 98 100
…..
7 77 33 12 91
用户可以指定按照Age(升序),Score2(降序)的顺序对数据进行排序。
代码如下:
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"
>
< html >
< head >
< style type ="text/css" >
body {}{ font-size:1em;}
div,h1,h3 {}{ text-align : center; }
td.head {}{ width:120px;background-color:#dddddd;font-weight:bold;}
td.data {}{ width:120px;background-color:#eeeeee;}
</ style >
< script type ="text/javascript" language ="Javascript" >
// 二维数字数组
var clmArr = new Array();
clmArr=[ [1,5,456,6,89], [2,51,515,32,15],[3,45,68,24,6] ];
// 要根据排序的列
var orderByTheObject = 0;
// 排序方式
var orderByTheOrder = 1;
// 排序函数
function arrSort(arrA,arrB){
if (orderByTheOrder == "asc") {
return arrA[orderByTheObject]-arrB[orderByTheObject];
} else if (orderByTheOrder == "desc")
{
return arrB[orderByTheObject]-arrA[orderByTheObject];
}
}
// 画表格,输出二维数组
function writeTable(){
var outString = "<table>";
for(var i=0; i<clmArr.length; i++)
{
outString += "<tr><td class='data'>"+ clmArr[i].join("</td><td class='data'>") +"</td></tr>";
}
outString += "</table>";
document.getElementById("data").innerHTML = outString;
}
// 改变排序方式
function displayChange(){
orderByTheObject = document.getElementById("clmName").value;
orderByTheOrder = document.getElementById("order").value;
clmArr.sort(arrSort);
writeTable();
}
</ script >
</ head >
< body scroll ="no" onload ="writeTable()" >
< h1 > YW5_Test02 </ h1 >
< hr >
< h3 > Order By : </ h3 >
< div id ="slct" >
< select name ="clmName" onchange ="displayChange()" >
< option value ="0" > Id </ option >
< option value ="1" > Age </ option >
< option value ="2" > Score1 </ option >
< option value ="3" > Score2 </ option >
< option value ="4" > Score3 </ option >
</ select >
< select name ="order" onchange ="displayChange()" >
< option value ="asc" > asc </ option >
< option value ="desc" > desc </ option >
</ select >
</ div >
< br >
< br >
< div id ="head" >
< table >
< tr >
< td class ="head" > Id </ td >
< td class ="head" > Age </ td >
< td class ="head" > Score1 </ td >
< td class ="head" > Score2 </ td >
< td class ="head" > Score3 </ td >
</ tr >
</ table >
</ div >
< div id ="data" >
< span ></ span >
</ div >
</ body >
</ html >
< html >
< head >
< style type ="text/css" >
body {}{ font-size:1em;}
div,h1,h3 {}{ text-align : center; }
td.head {}{ width:120px;background-color:#dddddd;font-weight:bold;}
td.data {}{ width:120px;background-color:#eeeeee;}
</ style >
< script type ="text/javascript" language ="Javascript" >
// 二维数字数组
var clmArr = new Array();
clmArr=[ [1,5,456,6,89], [2,51,515,32,15],[3,45,68,24,6] ];
// 要根据排序的列
var orderByTheObject = 0;
// 排序方式
var orderByTheOrder = 1;
// 排序函数
function arrSort(arrA,arrB){
if (orderByTheOrder == "asc") {
return arrA[orderByTheObject]-arrB[orderByTheObject];
} else if (orderByTheOrder == "desc")
{
return arrB[orderByTheObject]-arrA[orderByTheObject];
}
}
// 画表格,输出二维数组
function writeTable(){
var outString = "<table>";
for(var i=0; i<clmArr.length; i++)
{
outString += "<tr><td class='data'>"+ clmArr[i].join("</td><td class='data'>") +"</td></tr>";
}
outString += "</table>";
document.getElementById("data").innerHTML = outString;
}
// 改变排序方式
function displayChange(){
orderByTheObject = document.getElementById("clmName").value;
orderByTheOrder = document.getElementById("order").value;
clmArr.sort(arrSort);
writeTable();
}
</ script >
</ head >
< body scroll ="no" onload ="writeTable()" >
< h1 > YW5_Test02 </ h1 >
< hr >
< h3 > Order By : </ h3 >
< div id ="slct" >
< select name ="clmName" onchange ="displayChange()" >
< option value ="0" > Id </ option >
< option value ="1" > Age </ option >
< option value ="2" > Score1 </ option >
< option value ="3" > Score2 </ option >
< option value ="4" > Score3 </ option >
</ select >
< select name ="order" onchange ="displayChange()" >
< option value ="asc" > asc </ option >
< option value ="desc" > desc </ option >
</ select >
</ div >
< br >
< br >
< div id ="head" >
< table >
< tr >
< td class ="head" > Id </ td >
< td class ="head" > Age </ td >
< td class ="head" > Score1 </ td >
< td class ="head" > Score2 </ td >
< td class ="head" > Score3 </ td >
</ tr >
</ table >
</ div >
< div id ="data" >
< span ></ span >
</ div >
</ body >
</ html >
这样的代码似乎有些格路。但还是让我学到了些东西。
用Comparator这个接口来做应该更标准一些,有时间再试试吧。