【发布时间】:2016-06-10 10:04:21
【问题描述】:
下面是我的代码,它在for 循环中花费时间从一个对象中提取数据并填充另一个对象。有什么办法可以减少执行时间?我尝试了while 循环,但它并没有太大帮助。请帮忙
function SetGridWithData(result) {
if (!result) {
return;
}
CtrlBillableItem_SearhedBillableItems = result
var boxOfJson = [];
var j = 100;
if (result.length >= 100) {
if (PagingLastRecNum == 0) {
btnPrevious.style.display = 'none';
for (var i = 0; i < j; i++) {
boxOfJson.push(result[i]);
}
} else {
btnPrevious.style.display = 'inline';
var intializer = (j * PagingLastRecNum) + PagingLastRecNum;
var limiter = intializer + 99;
for (var i = intializer; i < limiter; i++) {
boxOfJson.push(result[i]);
}
}
} else {
btnPrevious.style.display = 'none';
btnNext.style.display = 'none';
for (var i = 0; i < result.length; i++) {
boxOfJson.push(result[i]);
}
}
}
我正在尝试实现已完成的分页,但首先每页 100 个数据它将检查第 0 页,如果它是循环一个,如果不是 0,则不是其他情况。
【问题讨论】:
-
您可以尝试slice 一次性获取阵列的一部分,而不是推入新阵列,这可能涉及随着阵列的增长而重新分配和扩展。但我怀疑即使是 100 个元素也会很慢。
-
另外,由于您使用的是
i < limiter而不是i <= limiter,您可能想再次添加 100,而不是 99。 -
对不起,我没有得到最后一条评论,你能再解释一下吗?有什么错误吗?我的意思是它会获取下一个 100 总是正确的?
-
谢谢它不需要第 100 个数据,我知道了,非常感谢
-
使用切片,正如@Rup 指出的那样。注意:通过
new Array(length)预分配数组总是比在已知边界的循环中动态扩展数组更快。
标签: javascript jquery json for-loop