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