循环通过数组的速度与循环通过对象的速度

时间:2015-08-03 17:25:00

标签: javascript arrays

我不确定是否已经提出这个问题,如果有,请在评论中告诉我,我会删除这个问题。什么更快,循环对象或循环数组?例如,如果我有两个完全相同的数组(脚本正常运行所需,不会详细说明),一个数组中的每个位置都与另一个数组中的位置相关联。所以它看起来像这样:

var array_variable = ["get_ped_bridges", "get_rail_bridges"];
var array_url = ["http://eg.com/rest/services/Nope/MapServer/1", "http://eg.com/rest/services/Nope/MapServer/2"];

for(var j = 0; j < array_variable.length; j++){
    console.log(array_variable[j], array_url[j]);
}

正如您所看到的,每个网址都匹配array_variable数组中的某个位置。在一个对象中,它看起来像这样:

var object = {
    one: {
        variable: "get_ped_bridges",
        url: "http://eg.com/rest/services/Nope/MapServer/1"
    },
    two: {
        variable: "get_rail_bridges",
        url: "http://eg.com/rest/services/Nope/MapServer/2"
    }
}

那么,如果两者的长度都要长得多(实际长度可能大约是20个位置),那么哪个循环处理得更快?

2 个答案:

答案 0 :(得分:2)

简短的回答是,通常阵列更快。

这是因为数组中的连续索引,其中始终完全知道下一个元素的位置(因为它是连续存储的)

您可以参考此前一个答案以获取更多信息:Array vs. Object efficiency in JavaScript

答案 1 :(得分:0)

<script src="http://broofa.com/Tools/JSLitmus/JSLitmus.js"></script>
<script>
JSLitmus.test('Array', function() {
    var array_variable = ["get_ped_bridges", "get_rail_bridges"];
    var array_url = ["http://eg.com/rest/services/Nope/MapServer/1", "http://eg.com/rest/services/Nope/MapServer/2"];

    for (var j = 0, len = array_variable.length; j < len; j++) {
        //
    }

    for (var j = 0, len = array_url.length; j < len; j++) {
        //
    }
});

JSLitmus.test('Object', function() {
    var object = {
        one: {
            variable: "get_ped_bridges",
            url: "http://eg.com/rest/services/Nope/MapServer/1"
        },
        two: {
            variable: "get_rail_bridges",
            url: "http://eg.com/rest/services/Nope/MapServer/2"
        }
    };

    for (var i in object) {
        //
    }
});
</script>