如何将json文件实现为javascript

如何将json文件实现为javascript,javascript,arrays,json,Javascript,Arrays,Json,我正在尝试将一个本地海量数据json文件实现到我的javascript文件中。我尝试了这个,但没有成功。返回0 这个函数的概念是当我输入lat和long时,它应该返回与它们相关的网格代码 function lookupGridcodeByLatAndLong(lat, long) { let gridcode = 0; $.getJSON('example.json',function( data ) { var result = data.find(x => x.lat

我正在尝试将一个本地海量数据json文件实现到我的javascript文件中。我尝试了这个,但没有成功。返回0

这个函数的概念是当我输入lat和long时,它应该返回与它们相关的网格代码

    function lookupGridcodeByLatAndLong(lat, long)
{
  let gridcode = 0;
$.getJSON('example.json',function( data ) {

  var result = data.find(x => x.lat == lat && x.long == long)
  if (result) { gridcode = result.GRIDCODE;}
});
return gridcode;
};
这就是我的数据的样子

 [{"GRIDCODE":1765,"lat":35.916,"long":-5.401},{"GRIDCODE":1807,"lat":35.907,"long":-5.467},{"GRIDCODE":1798,"lat":35.907,"long":-5.459},{"GRIDCODE":1546,"lat":35.907,"long":-5.409},{"GRIDCODE":1667,"lat":35.907,"long":-5.401},{"GRIDCODE":1729,"lat":35.907,"long":-5.384},{"GRIDCODE":1756,"lat":35.899,"long":-5.484},{"GRIDCODE":1773,"lat":35.899,"long":-5.476},{"GRIDCODE":1828,"lat":35.899,"long":-5.467},{"GRIDCODE":1842,"lat":35.899,"long":-5.459},{"GRIDCODE":1779,"lat":35.899,"long":-5.451},{"GRIDCODE":1728,"lat":35.899,"long":-5.442},{"GRIDCODE":1773,"lat":35.899,"long":-5.434},{"GRIDCODE":1609,"lat":35.899,"long":-5.426}]

这是因为
$.getJSON
正在异步运行

您需要使用回调或

使用承诺(首选方式)


这是因为getJSON调用是异步的。您应该执行基于承诺的实现

@MukeshKeshu Great!:)<代码>函数LookupGridCodeByLandLong(lat,long){返回新承诺((resolve,reject)=>{$.getJSON('example.json',函数(data){var result=data.find(x=>x.lat==lat&&x.long==long)if(result){resolve(result.GRIDCODE)}else{reject()}}};$(“#Btn”)。单击(函数(){var lat=document.getElementById(“lat”).value,long=document.getElementById(“long”).value;var result=lookupGridCodeByLandLong(lat,long);$(“#result”).html(result);})否。您不能只将返回值赋给
#result
您需要使用
。然后在那里执行
#result
的赋值。@MukeshKeshu有什么想法吗请$(“#Btn”)。单击(function(){var lat document=document.getElementById(“lat”).value;long=document.getElementById(“long”).value;lookupGridCodeByAndLong(lat,long).then(result=>{$(“#result”).html(result)});
function lookupGridcodeByLatAndLong(lat, long, done) {
  $.getJSON('example.json', function(data) {
    var result = data.find(x => x.lat == lat && x.long == long)

    done(result ? result.GRIDCODE : 0)
  })
}

lookupGridcodeByLatAndLong(lat, long, function(gridcode) {
  // do something with gridcode
})    
function lookupGridcodeByLatAndLong(lat, long) {
  return new Promise((resolve, reject) => {
    $.getJSON('example.json', function(data) {
      var result = data.find(x => x.lat == lat && x.long == long)

      if (result) {
        resolve(result.GRIDCODE)
      } else {
        reject()
      }
  })
}

lookupGridcodeByLatAndLong(lat, long)
.then(gridcode => {
  // do something with gridcode
})