Javascript 如何从JSON中获取项并使用if/else来说明接下来应该做什么?
是否可以从常规结果[0]中获取年龄。年龄?首先,我似乎找不到一种方法来获得价值。另外,当年龄小于10岁时,是否可以使用if语句执行Javascript 如何从JSON中获取项并使用if/else来说明接下来应该做什么?,javascript,html,json,Javascript,Html,Json,是否可以从常规结果[0]中获取年龄。年龄?首先,我似乎找不到一种方法来获得价值。另外,当年龄小于10岁时,是否可以使用if语句执行.then(vs=>document.getElementById('GBPM').innerHTML=vs.toFixed(2)),当年龄超过10岁时,是否可以执行。然后(vs=>document.getElementById('GBPM').innerHTML=“-Offline-” 我已经厌倦了使用常规的if-else,但没有任何效果。我也厌倦了获取年龄值,但没
.then(vs=>document.getElementById('GBPM').innerHTML=vs.toFixed(2))
,当年龄超过10岁时,是否可以执行。然后(vs=>document.getElementById('GBPM').innerHTML=“-Offline-”
我已经厌倦了使用常规的if-else,但没有任何效果。我也厌倦了获取年龄值,但没有成功
const getData5 = () =>
fetch('https://www.purpleair.com/json?show=13183')
.then(serverResponse => serverResponse.json())
.then(apiResultObject => apiResultObject.results[0])
.then(result => JSON.parse(result.Stats))
.then(stat => stat.v)
getData5()
.then((response) => {
console.log(response)
if(response.AGE <= 10){
let vs = response.Stats.v;
document.getElementById('RBPM').innerHTML = vs.toFixed(2);
document.getElementById('RBAQI').innerHTML = aqiFromPM(vs,'RBAQI','RBPM',"RBLVL")
}else if(response.AGE >= 10){
document.getElementById('RBPM').innerHTML = "-Offline-";
document.getElementById('RBPM').style.backgroundColor = "#808080";
document.getElementById('RBAQI').innerHTML = "-Offline-";
document.getElementById('RBAQI').style.backgroundColor = "#808080";
document.getElementById('RBLVL').innerHTML = "-Offline-";
document.getElementById('RBLVL').style.backgroundColor = "#808080";
}
});
每个对象的
AGE
属性都是Stats
的兄弟,而不是子对象
因此,您需要返回整个结果[0]
对象
const getData4=()=>
取('https://www.purpleair.com/json?show=22269')
.then(serverResponse=>serverResponse.json())
。然后(arr=>{
const want=arr.results[0]
wanted.Stats=JSON.parse(wanted.Stats);
通缉犯
})
getData4()。然后(项=>{
log(`Age${item.Age}`);
log(`Stats.v${item.Stats.v}`)
log(`PM2_5Value${item.PM2_5Value}`)
})
您需要从获取中返回承诺,然后才能在getData4()上使用
尝试下面的代码。希望它有帮助。忘记了改变年龄
const getData5 = () => {
return fetch('https://www.purpleair.com/json?show=22269')
.then(serverResponse => serverResponse.json())
.then(apiResultObject => apiResultObject.results[0])
}
getData5()
.then((item) => {
console.log(item)
if(item.AGE <= 10){
let vs = item.Stats.v;
document.getElementById('RBPM').innerHTML = vs.toFixed(2);
document.getElementById('RBAQI').innerHTML = aqiFromPM(vs,'RBAQI','RBPM',"RBLVL")
}else if(item.AGE >= 10){
document.getElementById('RBPM').innerHTML = "-Offline-";
document.getElementById('RBPM').style.backgroundColor = "#808080";
document.getElementById('RBAQI').innerHTML = "-Offline-";
document.getElementById('RBAQI').style.backgroundColor = "#808080";
document.getElementById('RBLVL').innerHTML = "-Offline-";
document.getElementById('RBLVL').style.backgroundColor = "#808080";
}
});
const getData5=()=>{
返回获取('https://www.purpleair.com/json?show=22269')
.then(serverResponse=>serverResponse.json())
.then(apiResultObject=>apiResultObject.results[0])
}
getData5()
。然后((项目)=>{
console.log(项目)
如果(项目年龄=10){
document.getElementById('RBPM').innerHTML=“-Offline-”;
document.getElementById('RBPM').style.backgroundColor=“#808080”;
document.getElementById('RBAQI').innerHTML=“-Offline-”;
document.getElementById('RBAQI').style.backgroundColor=“#808080”;
document.getElementById('RBLVL').innerHTML=“-Offline-”;
document.getElementById('RBLVL').style.backgroundColor=“#808080”;
}
});
检查Promise
(通常是异步的)工作原理。然后
只被调用一次(并且被使用)
是否可以显示APIResultObjectArrow函数在没有
{}
代码块时具有隐式返回used@RoneelParalkar谢谢。但是,if语句工作不正常。使用console.log(响应)
,它显示为1,但是,它完成了else语句中的代码。我根据需要更改了代码,并在上面进行了更新。.age
需要。age
和Stats是一个JSON字符串,直到它被解析为止。请使用大写的age属性立即检查。如果仍然不起作用,请告诉我为什么getData上的2是'then'6函数。只使用第一个…并在其中写入所有代码,说明这是不对的。OP将如何调用getData4()。然后()
?同时serverResponse.json()
返回一个承诺。请参阅fetch()
docs问题是他如何为某些age属性实现if-else语句,而不是像这样调用函数:getData(){return fetch(…url)}
或者像这样:getData(){fetch(…url)。然后(…set innerHTML)}
。很好,但是您必须使用serverResponse.json()
promise正确,如果打开url,将看到数据是一个数组。您的代码将抛出错误,并且不会在then()中返回任何内容
是否可以将控制台.log
作为一个变量,我可以使用它来比较@RoneelParalkar给出的if/else?当然……我只是向您展示如何从数组中的每个对象获取年龄。您想要所有年龄还是第一个年龄?我需要结果中的AGE
。[0].AGE
在JSON inputOK上,所以去掉数组的其余部分,只返回数组中的第一个对象?是的,请问有没有办法不使用数组?
const getData5 = () => {
return fetch('https://www.purpleair.com/json?show=22269')
.then(serverResponse => serverResponse.json())
.then(apiResultObject => apiResultObject.results[0])
}
getData5()
.then((item) => {
console.log(item)
if(item.AGE <= 10){
let vs = item.Stats.v;
document.getElementById('RBPM').innerHTML = vs.toFixed(2);
document.getElementById('RBAQI').innerHTML = aqiFromPM(vs,'RBAQI','RBPM',"RBLVL")
}else if(item.AGE >= 10){
document.getElementById('RBPM').innerHTML = "-Offline-";
document.getElementById('RBPM').style.backgroundColor = "#808080";
document.getElementById('RBAQI').innerHTML = "-Offline-";
document.getElementById('RBAQI').style.backgroundColor = "#808080";
document.getElementById('RBLVL').innerHTML = "-Offline-";
document.getElementById('RBLVL').style.backgroundColor = "#808080";
}
});
const getData4 = () =>
fetch('https://www.purpleair.com/json?show=22269')
.then(serverResponse => {
var json = serverResponse.json();
if (json.yourAgeField > 10){ ...set GBPM }
else { ..set -Offline- }
})