快速 HTML 表格排序?

2024-05-26

是的,我知道有一个lot有很多 JS/jQuery 程序可以做到这一点。我目前正在使用http://www.kryogenix.org/code/browser/sorttable/sorttable.js http://www.kryogenix.org/code/browser/sorttable/sorttable.js。这非常简单:只需一个 JS 文件,向表中添加一些类属性,然后就可以了。特别是,您实际上不需要了解 JS 即可使用它,并且您可以添加自定义排序键,而无需编写自己的 JS 来扩展它。由于这两个原因我非常喜欢它。主要问题:我的表长约 9300 行,排序需要 10-20 秒。所以我想知道还有其他脚本比这个更快吗?这些是我发现的:

http://webfx.eae.net/dhtml/sortabletable/sortabletable.html http://webfx.eae.net/dhtml/sortabletable/sortabletable.html(甚至不知道这有什么用)
http://tablesorter.com/docs/ http://tablesorter.com/docs/(真的非常好,但不容易扩展,需要了解 JS/jQuery)http://flexigrid.info/ http://flexigrid.info/(矫枉过正,我只需要一个表排序器,而不是整个数据操作程序)
http://datatables.net/ http://datatables.net/(大材小用,需要Js/jQuery扩展)

我确信还有 5000 个其他程序可以完成我想要的任务,但我没有时间找出并测试所有这些程序,看看它们是否很快。因此,我想知道 StackOverflow 上是否有人可以向我指出他们认为速度很快的库,所以我只需要弄清楚如何使用一个程序。

(顺便说一句,我见过 Java 使用快速排序在几毫秒内对数十万个数字进行排序;有人知道 JS.sort() 使用什么算法吗?)


我在 DataTables(另一个 jQuery 插件)方面取得了巨大的成功,其行号与您所讨论的类似。你在 javascript 中看到的速度损失比在 java 中看到的速度损失是它实际上是在渲染 DOM,这需要更多的工作。 DataTables 的美妙之处在于您能够从 javascript 数组(本质上是 json)获取数据 - 因此排序是在数组上完成的(与 java 的速度类似),然后仅显示用户需要查看的表部分是在 DOM 中生成的。

请参阅以下网址以获取示例:

http://datatables.net/examples/data_sources/js_array.html http://datatables.net/examples/data_sources/js_array.html

or

http://datatables.net/examples/data_sources/ajax.html http://datatables.net/examples/data_sources/ajax.html

我建议使用后者。如果使用静态 json 数组仍然不够快,您将需要构建一个服务器端脚本来减轻 javascript 的负担 - 这里有服务器端代码的一个很好的例子:

http://datatables.net/examples/data_sources/server_side.html http://datatables.net/examples/data_sources/server_side.html

编辑:无限滚动

正如评论中所讨论的,问题不在于排序,而在于 HTML 表与 JS 之间的转换。当用户查看时,仅加载返回排序的渲染部分,这可能会有所帮助;服务器也以JSON形式向JS提供与表相同的信息。这两种技术消除了HTML-JS转换和渲染问题,从而大大提高了速度。

HTML(这是在 JSON 出现之前最初必须渲染的所有内容 - 添加与列一样多的标签):

<table id="table_id">
    <thead>
        <tr>
            <th>Column 1</th>
            <th>Column 2</th>
            <th>etc</th>
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>

JQUERY:

$(document).ready(function() {
    $('#table_id').dataTable( {
        "bScrollInfinite": true,
        "bScrollCollapse": true,
        "sScrollY": "200px",
        "bProcessing": true,
        "sAjaxSource": 'array.txt'
    });
});

array.txt 包含:

{ "aaData": [
    ["This will be in column 1","This in two","this in 3"],
    ["another row - column 1","another two","another 3"]
]}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速 HTML 表格排序? 的相关文章

随机推荐