javascript - 将 JSON 对象数组动态放入表中的有效方法是什么?

标签 javascript jquery html json

我有一个使用 PapaParse 创建的 JSON 对象 2D 关联数组 (?)(数据对象有 193 行和 49 列)。我想将其动态添加到我的网页中。下面的代码使用 jQuery 并且可以工作,但速度非常慢。有没有更快的方法?

注意:我给了单元格唯一的 ID,因为我希望用户能够以交互方式选择要保留的某些列...

$('<table/>', {
          'id' : 'dataTable' 
    }).appendTo("body");

$('<tbody/>', {
        "id": "dataTableBody",
    }).appendTo("#dataTable");  


// cycle through values and add data to table

for (var i = 0; i < Parseddata.length; i++) {
    $('<tr/>', { 
        "id":"dataTableRow_"+i 
        }).appendTo("#dataTableBody");
    for (var j = 0; j < Parseddata[0].length; j++) {
        $('<td/>', {
            "id":"dataTableColumn_"+j,
            "text":Parseddata[i][j]
      }).appendTo("#dataTableRow_"+i).css({"border":"solid white 1pt"});
    };
};

最佳答案

我认为最快的方法是使用 html 连接来生成整个标记,然后将其附加到正文。

但同时你可以延迟将表格渲染到正文,直到整个表格构建完毕,这样就不会触发浏览器的重绘...所以尝试一下

var $table = $('<table/>', {
    'id': 'dataTable'
});

var $tbody = $('<tbody/>', {
    "id": "dataTableBody",
}).appendTo($table);


// cycle through values and add data to table
var $tr;
for (var i = 0; i < Parseddata.length; i++) {
    $tr = $('<tr/>', {
        "id": "dataTableRow_" + i
    }).appendTo($tbody);
    for (var j = 0; j < Parseddata[0].length; j++) {
        $('<td/>', {
            "id": "dataTableColumn_" + j,
                "text": Parseddata[i][j]
        }).appendTo($tr).css({
            "border": "solid white 1pt"
        });
    };
};

$table.appendTo("body");
<小时/>

也可以尝试像下面这样的字符串连接

var html = [];
html.push('<table id="dataTable">');
html.push('<tbody id="dataTableBody">');

// cycle through values and add data to table
var $tr;
for (var i = 0; i < Parseddata.length; i++) {
    html.push('<tr id="dataTableRow_' + i + '">');
    for (var j = 0; j < Parseddata[0].length; j++) {
        html.push('<td id="dataTableColumn_' + i + '_' + j + '">');
        html.push(Parseddata[i][j]);
        html.push('</td>');
    };
    html.push('</tr>');
};

html.push('</tbody>');
html.push('</table>');

$('body').append(html.join(''))
<小时/> <小时/>

基准:JSPERF

关于javascript - 将 JSON 对象数组动态放入表中的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25860367/

相关文章:

javascript - 对 lodash/debounce 中的第一个函数调用进行去抖处理

android - Android 上的移动网站宽度问题

html - 如何将输入与多行文本的顶部对齐?

javascript - 数组 : how to push all elements forward by one with javascript 中的数组

javascript - 在控制台中打印数组对象

javascript - window.print 不打印 IE 11 表格中的所有分页数据

jquery - 拖放多个带有选项的选择

javascript - 如何在单击按钮时删除附加的 div?

javascript - 获取属性值

javascript - 滚动时水平移动图像,然后停止