希望阐明我对JavaScript对象,JSON和效率的理解。请看下面的例子。如果数据集包含成千上万个对象的数据集要大得多,那么我将方法三理解为最有效,最正确的选择,原因有三:
目标是拥有一个大型数据集,其中包含数千个对象,每个对象具有约15个属性(主要是数字)。将使用各种HTML表单选择来访问属性数据,然后通过javascript中的各种计算来运行数字属性。在开始构建数据集之前,我只是在考虑其结构。
特定问题(针对所述目标方案): 与方法1和3中的名称相比,选项2中的循环是否会导致效率低下? 对于描述的大型数据集,方法1中的评估函数是否会导致任何实际的低效率? 效率低下-我的意思是网站的加载时间明显。
HTML:
<select id="increment">
<option value="one">Increment One</option>
<option value="two">Increment Two</option>
</select>
方法一:
var one = {"count":0,"desc":"blah"};
var two = {"count":0,"desc":"blah"};
$("#increment").change(function(){
choice = $( "#increment option:selected" ).val();
a = eval(choice);
a.count++;
});
方法二:
var options = [{ "name":"one","count":0,"desc":"blah"},{"name":"two","count":0,"desc":"blah"}]
$("#increment").change(function(){
choice = $( "#increment option:selected" ).val();
for (i = 0; i < options.length; i++) {
if(options[i].name == choice){options[i].count++}
}
});
方法三:
var options = {
"one":{"count":0,"desc":"blah"},
"two":{"count":0,"desc":"blah"}
}
$("#increment").change(function(){
choice = $( "#increment option:selected" ).val();
options[choice].count++;
});