【问题标题】:how to search for a value in different Json files如何在不同的 Json 文件中搜索一个值
【发布时间】:2020-05-31 04:28:55
【问题描述】:

我试图做的是当用户输入一个位置的经度和纬度时,应用程序返回存储在 3 个 json 数据文件之一中的关联网格代码。 我正在尝试同时搜索所有三个文件,这是我的尝试,但无法正常工作。

  async function lookupGridcodeByLatAndLong(lat, long){
    const response=await fetch('data/GHI_part01.json');
    const line=await response.json();

    var result = line.find(x => x.lat == lat && x.long == long);
       if (result) {
      return result.GRIDCODE;
       } else {
      lookupGHI_part02(lat, long);
       }

}
async function lookupGHI_part02(lat, long){
    const response=await fetch('data/GHI_part02.json');
    const line=await response.json();
    var result = line.find(x => x.lat == lat && x.long == long);
       if (result) {
      return result.GRIDCODE;
       } else {
      lookupGHI_part03(lat, long);
       }
}
async function lookupGHI_part03(lat, long){
    const response=await fetch('data/GHI_part03.json');
    const line=await response.json();

    var result = line.find(x => x.lat == lat && x.long == long);
       if (result) {
      return result.GRIDCODE;
       } else {
      return new Error('No records found');
       }
}
$("#Btn" ).click(function() {
    lookupGridcodeByLatAndLong(lat, long)
    .then(gridcode => {
    var ghi = gridcode;})
$("#result").show();
$("#resultat").html(ghi);
}

这就是我的数据的样子

[{"GRIDCODE":2115,"Lat":29.478,"Long":-5.565},{"GRIDCODE":2115,"Lat":29.478,"Long":-5.562},{"GRIDCODE":2115,"Lat":29.486,"Long":-5.572},{"GRIDCODE":2113,"Lat":29.483,"Long":-5.567},{"GRIDCODE":2109,"Lat":29.483,"Long":-5.559},{"GRIDCODE":2115,"Lat":29.485,"Long":-5.554},{"GRIDCODE":2115,"Lat":29.493,"Long":-5.616},{"GRIDCODE":2120,"Lat":29.492,"Long":-5.609},{"GRIDCODE":2116,"Lat":29.492,"Long":-5.601},{"GRIDCODE":2116,"Lat":29.492,"Long":-5.592},{"GRIDCODE":2115,"Lat":29.493,"Long":-5.584},{"GRIDCODE":2110,"Lat":29.491,"Long":-5.575}]

【问题讨论】:

  • 什么不能正常工作?这些文件有多大,您是否需要多次搜索它们?
  • 文件包含超过 100000 行,是的,搜索应该不止一次,而且我不能将所有这些作为一个文件使用(包含大约 500000 行)它会导致违规加载浏览器,这就是为什么我将它们分成 3 个子文件
  • 仍然需要澄清你的问题是什么。我无法真正测试它以查看发生了什么。您是否遇到了由于数据过大而导致浏览器锁定的问题,或者它只是无法正常工作?
  • 问题是我有 3 个 json 文件,所以当用户输入经度和纬度时,应用程序应该返回与它们相关的网格代码,它位于这 3 个文件之一中,我尝试了代码 obve 但它返回没有什么我不能展示的,因为这 3 个文件中的数据量
  • 您可能会考虑在后端进行此搜索。或者,至少,一开始就将 3 个 JSON 文件作为变量加载,这样您只需执行一次

标签: javascript jquery arrays json


【解决方案1】:

第一个错误出现在

var result = line.find(x => x.Lat == lat && x.Long == long);

我在x.Latx.Long 中改为大写“L”

第二次插入另一个函数中的调用函数,我将其更改为这个

    async function lookupGridcodeByLatAndLong(lat, long){
    const response=await fetch('data/GHI_part01.json');
    const line=await response.json();
    var check =0;
    var result = line.find(x => x.Lat == lat && x.Long == long);
       if (result) {
      return result.GRIDCODE;
       }
             else {
       var check = 1;
       }
             if (check == 1)
             {
                const response=await fetch('data/GHI_part02.json');
                const line=await response.json();

                var result = line.find(x => x.Lat == lat && x.Long == long);
                   if (result) {
                  return result.GRIDCODE;
                   } else {
                    check = 2
                   }
             }
             if (check = 2)
             {
                 const response=await fetch('data/GHI_part03.json');
                const line=await response.json();

                var result = line.find(x => x.Lat == lat && x.Long == long);
                   if (result) {
                  return result.GRIDCODE;
                   } else {
                  return new Error('No records found');
                   }
             }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    相关资源
    最近更新 更多