一个简单的排序例子理解闭包作为参数
2011-06-09 23:34
477 查看
通过一个简单的排序例子理解Sort带参数的排序规则以及闭包作为参数执行计算。
下面是一段HTML内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <script type="text/javascript">
//$each是一个迭代方法,它将遍历collection中的每一个元素,并将其作为参数执行闭包运算 function $each(collection,closure) { var ret = [];//定义数组 for(var i = 0;i<collection.length;i++) { //将执行闭包运算后的结果加到数组集合中 ret.push(closure(collection[i])); } return ret; } //对Table进行排序 function SortTable(table,id) { var rows = $each(table.rows,function(x){return x;}); if(id == "Asc")//判断点击了升序 {
//带闭包参数的排序方法,可以控制升序还是降序。 rows.sort(function(a,b){ if(a.childNodes[0].innerText - 0 > b.childNodes[0].innerText - 0) { return 1; } else return -1; }); } else if(id == "Desc") { rows.sort(function(a,b){ if(a.childNodes[0].innerText - 0 > b.childNodes[0].innerText - 0) { return -1; } else return 1; }); } //将排序后的rows添加到table中 $each(rows,function(x){ x.parentElement.appendChild(x); return x; }); } </script> </head> <body> <table id="mytable" style="border: medium solid #000000"> <tr> <td>3</td> <td>Hello World</td> </tr> <tr> <td>0</td> <td>Will</td> </tr> <tr> <td>2</td> <td>Pan</td> </tr> <tr> <td>1</td> <td>Tian Tian Xiang Shang</td> </tr> <tr> <td>4</td> <td>Hao Hao Xue xi</td> </tr> </table> <div> <button id="Asc" onclick="SortTable(mytable,'Asc')">Sort By ASC</button> <button id="Desc" onclick="SortTable(mytable,'Desc')">Sort By Desc</button> </div> </body> </html>
[/code]
其上对应的输出图:
点击Sort By Asc后显示为:
点击Sort By Desc后输出为:
相关文章推荐
- react native 学习笔记-----理解redux的一个极其简单例子
- 编写一个排序函数,实现数字排序。排序方法由客户函数实现,函数参数个数为两个,两个参数的关系作为排序后的元素间的关系。
- 一个简单的例子让你理解值传递和引用传递
- 类模板作为函数参数以及作为类模板参数的一个简单示例
- 一个简单例子理解C#的协变和逆变
- 对Jena的简单理解和一个例子
- 一个简单的例子带你理解Hashmap
- ServerSocket的一个简单例子,学习backlog参数的设置,即可以接受客户端的数量
- 【jena】对Jena的简单理解和一个例子
- 用一个简单的例子来理解python高阶函数
- 一个简单的反射例子(通过类型或者类型参数获取类的名称)
- 一个闭包的简单例子
- 一个简单例子理解C语言指针
- c#打包文件解压缩 C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法 一个简单例子理解C#的协变和逆变 对于过长字符串的大小比对
- 一个简单例子让你彻底理解java回调机制
- 数组作为参数的一个例子
- js通过xmldom调用xslt对xml排序输出的一个简单例子.
- 一个简单的例子理解在JS原型继承中原型链是如何运作的
- 对Jena的简单理解和一个例子
- 对Jena的简单理解和一个例子(上)