如何减少javascript代码的执行时间

时间:2016-06-10 10:04:22

标签: javascript jquery json for-loop

下面是我的代码,它在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页,如果它是循环1而不是0而不是其他情况。

1 个答案:

答案 0 :(得分:1)

您可以尝试在函数开头缓存result.length(在开头的if检查之后)..

   function SetGridWithData(result) {
            if (!result) { return; }
            var resultLength = result.length;
            CtrlBillableItem_SearhedBillableItems = result
            var boxOfJson = [];
            var j = 100;
            if (resultLength >= 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 < resultLength; i++) {
                    boxOfJson.push(result[i]);
                }

            }
}