Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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
Javascript $。每次在JSON数据上循环都会降低浏览器速度_Javascript_Jquery_Json - Fatal编程技术网

Javascript $。每次在JSON数据上循环都会降低浏览器速度

Javascript $。每次在JSON数据上循环都会降低浏览器速度,javascript,jquery,json,Javascript,Jquery,Json,我试图加载值至少为4000条记录的Json数据,我试图使用Json数据为select标记创建选项。我使用$.each进行迭代。这会挂断我的浏览器。任何人都可以提供解决方案来解决这个问题 var prevGroup, $group = $(); $.each(data, function (index, value) { var group = value.nested; if (group != prevGroup) { $group = $('<optgrou

我试图加载值至少为4000条记录的Json数据,我试图使用Json数据为select标记创建选项。我使用$.each进行迭代。这会挂断我的浏览器。任何人都可以提供解决方案来解决这个问题

var prevGroup, $group = $();
$.each(data, function (index, value) {
   var group = value.nested;

   if (group != prevGroup) {
       $group = $('<optgroup />', {label: group}).appendTo('#select');
   }

   if (value.selected !== "") {
       $group.append($('<option />', {
         text: value.text,
         value: value.value,
         selected: value.selected,
       }));
    } else {
       $group.append($('<option />', {
          text: value.text,
          value: value.value
        }));
    }

    prevGroup = group;


});
var prevGroup,$group=$();
$.each(数据、函数(索引、值){
var group=value.nested;
如果(组!=prevGroup){
$group=$('',{label:group}).appendTo('#select');
}
如果(value.selected!==“”){
$group.append($(''){
text:value.text,
value:value.value,
选中:value.selected,
}));
}否则{
$group.append($(''){
text:value.text,
value:value.value
}));
}
prevGroup=组;
});

每个都尝试一下,看看它是否是JQuery

each=function(a,b,c){if("function"==typeof b)for(var d=0;d<a.length;d++)b(d,a[d]);else for(var d=0;d<a.length;d++)typeof a[d]==b&&c(d,a[d])};

解决方案:不要循环超过4000条记录。认真地寻找一种更好的模式来检索数据,例如分页,以分割检索到的数据。因此,在标记中添加4k标记,这对于DOM来说是一顿丰盛的早餐。对于批量数据循环,最好使用
for loop
而不是
$。each()
,此外,您还应该一次以少量分页方式提取数据。select中的4000个选项会提供较差的用户体验。为什么不改用自动完成验证呢?或者提供一个选择器来选择Rory建议的分页数据。可能会加快速度:不要在每次迭代(
$(“”)
)中构建jquery对象,而是连接一个js字符串(
“…”
)和
之后。每个
都将其附加到dom中。
$(“”)
等的每次调用都很慢。
each(array,function(index,value){

    });