javascript中for循环所花费的时间随着迭代次数的增加呈指数增长
我在一些代码中使用这个for循环。这段代码将“left array”中存在的所有元素追加到一个表中,并为它们指定一个唯一的rowID,该行工作正常 问题是:当“left”数组的长度为5000时,执行此循环大约需要9秒,但当“left”数组的长度为10000和15000时,分别需要27秒和54秒。我猜这是一个模棱两可的行为,时间应该随着迭代次数的增加而线性增加。如果有人能告诉我这个问题的原因和解决办法,我会很高兴的 提前感谢。:)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
$(“body”).append(“表1
”)
表=$('');
div=$('');
$(div).append(表);
$('body')。追加(div);
对于(var rowID=0,l=left.length;rowID
单独添加N个元素会导致多达N个回流。随着要添加的元素数量的增加,性能会降低
您可以重构代码,在内存中创建DOM片段和节点,然后使用singleappend()
//在内存中创建节点
变量表=$('');
对于(var rowID=0,l=left.length;rowID表1”);
//附加到DOM
$(“正文”)。附加(添加(div)段)
良好的读取单独添加N个元素会导致多达N个回流
。随着要添加的元素数量的增加,性能会降低
您可以重构代码,在内存中创建DOM片段和节点,然后使用singleappend()
//在内存中创建节点
变量表=$('');
对于(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))