Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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 如何加快对HTML5 localStorage中存储的JSON的访问?_Javascript_Jquery_Json_Html_Cordova - Fatal编程技术网

Javascript 如何加快对HTML5 localStorage中存储的JSON的访问?

Javascript 如何加快对HTML5 localStorage中存储的JSON的访问?,javascript,jquery,json,html,cordova,Javascript,Jquery,Json,Html,Cordova,在我的Cordova/PhoneGap应用程序中,我有一堆JSON代码,存储在localStorage中,用于呈现自定义表单字段。当用户单击某个对象时,我从localStorage检索JSON,对其进行解析,遍历所有对象以查看其ID是否与我选择的ID匹配,当它找到匹配项时,它运行一个函数以显示表单字段。像这样: $(document).on('click', '.checklistObject', function() { var allChecklists = JSON.par

在我的Cordova/PhoneGap应用程序中,我有一堆JSON代码,存储在localStorage中,用于呈现自定义表单字段。当用户单击某个对象时,我从localStorage检索JSON,对其进行解析,遍历所有对象以查看其ID是否与我选择的ID匹配,当它找到匹配项时,它运行一个函数以显示表单字段。像这样:

    $(document).on('click', '.checklistObject', function() {
    var allChecklists = JSON.parse(localStorage.checklists);
    var element_id = $(this).attr("id");
    $.each(allChecklists, function(key, val) {
        if (val.id == element_id) {
            displayChecklist(val);
        }
    });
});
现在,这在旧设备上非常缓慢。比如5秒的加载时间

有没有更快的方法可以做到这一点,最好跳过迭代部分,直接在localStorage中查找对象,或者以某种方式将数据存储在DOM对象中,然后从中获取数据

$('.checklistObject').click(function(){
    displayChecklist(this.jsonData);
 });

HTML3?你回到过去了吗?数据阵列有多大?如果不是很大,任何性能改进都可能不是很好noticeable@charlietfl我猜高达100k。如果它是具有与元素ID匹配的键的对象,则不需要迭代。另外,在单击之前退出存储可能会有所帮助,例如在页面加载之后。这意味着在您实际需要对象之前将json字符串解析为javascript对象。这样的大字符串可能需要一些时间来解析