在 IE 中将表解析为数组对象的有效方法

Posted

技术标签:

【中文标题】在 IE 中将表解析为数组对象的有效方法【英文标题】:efficient way to parse table to array object in IE 【发布时间】:2011-10-28 01:06:33 【问题描述】:

我有超过 1k 行和超过 7 列的表,试图解析为数组对象,我尝试使用 jquery

$(tableSearch).each(function () 
    $('tr', $(this)).each(function (key, tr) 
        var self = this;
        var obj = new Object();
        var rowPos = 0;
        $('td', tr).each(function (rowPos) 
            obj[_self.colModel[rowPos].name] = $(this).html();
        );
        obj['Key'] = 'Rec-' + key;
    );
);

在 FF 中需要 300 毫秒,但在 IE 中需要 60 秒 :(

因为你可以比较它慢 200 倍左右。

有什么方法可以在 IE 中获得性能。我尝试了原始的javascript方法也仍然在IE效率没有达到。

帮助我!!!!!!!.. 我怎样才能在所有浏览器中获得相似的性能。

提前致谢

【问题讨论】:

没有办法解决这个问题。如果可以推迟任务***.com/questions/1160137/… 或向用户显示某种进度条,您应该考虑将代码作为后台线程运行.. 保时捷比乌龟快,这就是生活。只要乌龟不能跑得更快,您就需要将保时捷减速以获得相似的速度。 不能把数据留在表里吗? $("#tableId tr").eq(1000) 我正在尝试从数据表中生成网格(我必须使用 JQGRID)。所以我需要将该表解析为数组对象。我别无选择。因为我将无法访问此表的生成方式。它是一个庞大的安全系统。仅提供数据表。我需要在哪里添加所有操作,例如动态添加、删除按钮.. 你试过不使用 jQuery 吗?当它是一个简单的 for 循环时,它可能会更快。也许.. ^^ 【参考方案1】:

我得到了解决方案,如果我们以这种方式实现,IE 会更快

table = document.getElementById("myGrid");
    for (i = 0; i < table.rows.length; i += 1) 
       var rowData = new Array();
       row = table.rows[i];
       for (j = 0; j < row.cells.length; j += 1) 
           cell = row.cells[j];
           rowData[j] = cell.innerHtml
       
       obj.push(rowData);
    

注意:如果您使用任何调试器,请禁用调试模式。

那么 IE 似乎是合理的,但不能比 FF 或 safari 快

【讨论】:

以上是关于在 IE 中将表解析为数组对象的有效方法的主要内容,如果未能解决你的问题,请参考以下文章

如何在c#中将对象转换为数组? [关闭]

如何在 Android Studio 中将 CSV 文件解析为数组

在 C# 中将字符串解析为数组

如何在 JavaScript node.js 中将 xml 文件解析为数组

如何在ios中将字典的双引号数组解析为json?

如何在PHP中解析json