javascript中for循环所花费的时间随着迭代次数的增加呈指数增长

javascript中for循环所花费的时间随着迭代次数的增加呈指数增长,javascript,jquery,html,arrays,performance,Javascript,Jquery,Html,Arrays,Performance,我在一些代码中使用这个for循环。这段代码将“left array”中存在的所有元素追加到一个表中,并为它们指定一个唯一的rowID,该行工作正常 问题是:当“left”数组的长度为5000时,执行此循环大约需要9秒,但当“left”数组的长度为10000和15000时,分别需要27秒和54秒。我猜这是一个模棱两可的行为,时间应该随着迭代次数的增加而线性增加。如果有人能告诉我这个问题的原因和解决办法,我会很高兴的 提前感谢。:) $(“body”).append(“表1”) 表=$(''); d

我在一些代码中使用这个for循环。这段代码将“left array”中存在的所有元素追加到一个表中,并为它们指定一个唯一的rowID,该行工作正常

问题是:当“left”数组的长度为5000时,执行此循环大约需要9秒,但当“left”数组的长度为10000和15000时,分别需要27秒和54秒。我猜这是一个模棱两可的行为,时间应该随着迭代次数的增加而线性增加。如果有人能告诉我这个问题的原因和解决办法,我会很高兴的

提前感谢。:)

$(“body”).append(“

表1

”) 表=$(''); div=$(''); $(div).append(表); $('body')。追加(div); 对于(var rowID=0,l=left.length;rowID
单独添加N个元素会导致多达N个
回流。随着要添加的元素数量的增加,性能会降低

您可以重构代码,在内存中创建DOM片段和节点,然后使用single
append()

//在内存中创建节点
变量表=$('');
对于(var rowID=0,l=left.length;rowID表1

”); //附加到DOM $(“正文”)。附加(添加(div)段)

良好的读取

单独添加N个元素会导致多达N个
回流
。随着要添加的元素数量的增加,性能会降低

您可以重构代码,在内存中创建DOM片段和节点,然后使用single
append()

//在内存中创建节点
变量表=$('');
对于(var rowID=0,l=left.length;rowID表1

”); //附加到DOM $(“正文”)。附加(添加(div)段)

仔细阅读

您的解决方案确实将时间缩短了1秒,但仍然无法解决随着迭代次数的增加而呈指数增长的问题。使用代码后,15k次迭代需要50秒。:)@YashParikh,你能做一把小提琴吗?试试这个
var str='';对于(var rowID=0,l=left.length;rowID`您的解决方案确实将时间缩短了1秒,但仍然无法解决随着迭代次数的增加而呈指数级增长的问题。使用代码后,15k次迭代需要50秒。:)@YashParikh,你能做一把小提琴吗?试试这个
var str='';对于(var rowID=0,l=left.length;rowID`
$("body").append('<p id = "p1">table1</p>')
table = $('<table id="first-table">');
div = $('<div ></div>');
$(div).append(table);
$('body').append(div);

for (var rowID = 0, l = left.length; rowID < l; rowID++) {

    if (left[rowID] != null) {
        var tr = $('<tr>');
        table.append(tr);
        tr.append('<td class="cell" id="a' + rowID + '">' + left[rowID] + '</td>');
    }
}
//Createing Nodes in memory
var table = $('<table id="first-table">');
for (var rowID = 0, l = left.length; rowID < l; rowID++) {
    if (left[rowID] != null) {
        $('<tr>').append('<td class="cell" id="a' + rowID + '">' + left[rowID] + '</td>')
                 .appendTo(table);
    }
}

var div = $('<div ></div>').append(table);
var paragraph = $('<p id = "p1">table1</p>');

//Append to DOM     
$("body").append(paragraph.add(div))