SortTable组件的实现

来源:互联网 发布:魔兽世界多核优化 编辑:程序博客网 时间:2024/05/01 03:47

需求分析

      SortTable最基本的需求就是对表格的数据列进行排序,但只实现这么简单的排序,通用性太差,不能灵活满足高级需求。经过挖掘,比较高级的功能一般有:

      1. 除了常规的number string date类型外,可以自定义某列的排序方式

      2. date可以采用各种形式,不一定只能采用默认形式

      3. 可以对些HTML类型的字段进行排序

      4. 可以固定某些列不排序,比如序号列

      5. 对上一次排序的列可以反转排序

      6. 如果表格行数很大,表头可以滚动,这样用户清楚每列是什么数据

      7. 自定义样式表头 数据行的一些样式

      8. 支持复杂的表头中的某些字段排序,比如thead有两个tr,某些td进行了合并

 

      有些需求凭空是想不到,需要有比较多的应用场景才能挖掘出来。

实现

      表格排序的基本原理就是把TR对象push到一个数组中,使用数组的sort方法排序,排序后append到tbody中。append会自动调整tr顺序,且不会重复。

      其实把需求和基本原理弄明白了实现也就不难了。有些需求硬实现起来确实很费劲,但使用自定义属性就很容易实现且定制也会很灵活,还有从html拿到都是字符串,需要转换成排序的类型,但数据中可能是-  -- 、日期格式也是五花八门,实现包容所有数据的类型转换几乎不可能,对于这些我们无法确定的就可以扔出去让使用者自己出来, SortTable本身只处理常规的情况。

      数据量非常大时排序可能就会很慢,应该尽量减少sort比较函数的计算,把比较大小以外的活(计算比较字段)放在sort外面进行。

源代码

 

原创粉丝点击