Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 优化对象和数据结构_Jquery_Html_Json - Fatal编程技术网

Jquery 优化对象和数据结构

Jquery 优化对象和数据结构,jquery,html,json,Jquery,Html,Json,希望澄清我对JavaScript对象、JSON和效率的理解。请看下面的例子。如果数据集更大,有数千个对象,我认为方法三是最有效和正确的选择,原因有三: 与方法二不同的是,没有循环——它不会贯穿整个数据集。所选对象直接由名称引用 与方法一不同,无需对选择进行求值()即可引用它。少走一步 在方法2和方法3中使用JSON比在方法1中使用单独的对象更可取。JSON更具“打包”性和可转移性 目标是拥有一个包含数千个对象的大型数据集,每个对象具有约15个属性(主要是数字)。属性数据将使用各种HTML表单选择

希望澄清我对JavaScript对象、JSON和效率的理解。请看下面的例子。如果数据集更大,有数千个对象,我认为方法三是最有效和正确的选择,原因有三:

  • 与方法二不同的是,没有循环——它不会贯穿整个数据集。所选对象直接由名称引用
  • 与方法一不同,无需对选择进行求值()即可引用它。少走一步
  • 在方法2和方法3中使用JSON比在方法1中使用单独的对象更可取。JSON更具“打包”性和可转移性
  • 目标是拥有一个包含数千个对象的大型数据集,每个对象具有约15个属性(主要是数字)。属性数据将使用各种HTML表单选择进行访问,然后数值属性在javascript中通过各种计算运行。在开始构建数据集之前,我只是仔细考虑它的结构。

    具体问题(针对所述目标场景): 与方法1和方法3中按名称引用对象相比,选项2中的循环是否会导致效率低下? 对于所描述的大数据集,方法1中的eval函数是否会导致实际的低效率? 效率低下——我指的是网站明显的加载时间

    HTML:

    方法二:

    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 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++;
    });