Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.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 如何从JSON中获取项并使用if/else来说明接下来应该做什么?_Javascript_Html_Json - Fatal编程技术网

Javascript 如何从JSON中获取项并使用if/else来说明接下来应该做什么?

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,但没有任何效果。我也厌倦了获取年龄值,但没

是否可以从常规结果[0]中获取年龄。年龄?首先,我似乎找不到一种方法来获得价值。另外,当年龄小于10岁时,是否可以使用if语句执行
.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- }
                })