优化对象和数据结构

时间:2018-06-19 15:01:49

标签: jquery html json

希望阐明我对JavaScript对象,JSON和效率的理解。请看下面的例子。如果数据集包含成千上万个对象的数据集要大得多,那么我将方法三理解为最有效,最正确的选择,原因有三:

  1. 与方法二不同,没有循环-它不会遍历整个数据集。所选对象直接按名称引用。
  2. 与方法一不同,无需为了引用它而选择eval()。再少一步。
  3. 在方法二和方法三中都使用JSON优于方法一中的单独对象。 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++;
}); 

0 个答案:

没有答案