如何将json文件实现为javascript
我正在尝试将一个本地海量数据json文件实现到我的javascript文件中。我尝试了这个,但没有成功。返回0 这个函数的概念是当我输入lat和long时,它应该返回与它们相关的网格代码如何将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
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
})