Как преобразовать объект объектов в отдельные значения.? - PullRequest
2 голосов
/ 01 мая 2020

Я пытаюсь получить доступ к информации из вызова API JSON, чтобы сохранить данные в массив и использовать их в дальнейшем. Это пример вызова API пример API . Я пытаюсь получить доступ к "iaqi" proberty, который является объектом объектов. Мне нужны целочисленные значения, такие как 9,53,10,102 ... et c. Я написал следующий код, чтобы преобразовать его в массив объектов с именем dataArray , а затем повторил его, чтобы получить отдельные ключ: значение пар.

 const dataArray = Object.values(response.body.data.iaqi);
        const iterator = dataArray.entries();

        for(const[index, element] of iterator){
            console.log(element)
        }

который дал мне следующий вывод: -

Вывод

Есть ли способ получить доступ к значениям отдельных чисел и сохранить их в массиве? Буду признателен за любую помощь, и, пожалуйста, исправьте меня, если я сделал что-то не так, как я здесь недавно.

Ответы [ 2 ]

3 голосов
/ 01 мая 2020

Ты имеешь в виду, вот так?

const src = {"status":"ok","data":{"aqi":137,"idx":1451,"attributions":[{"url":"http://www.bjmemc.com.cn/","name":"Beijing Environmental Protection Monitoring Center (北京市环境保护监测中心)"},{"url":"https://china.usembassy-china.org.cn/embassy-consulates/beijing/air-quality-monitor/","name":"U.S Embassy Beijing Air Quality Monitor (美国驻北京大使馆空气质量监测)"},{"url":"https://waqi.info/","name":"World Air Quality Index Project"}],"city":{"geo":[39.954592,116.468117],"name":"Beijing (北京)","url":"https://aqicn.org/city/beijing"},"dominentpol":"pm25","iaqi":{"co":{"v":5.5},"h":{"v":54},"no2":{"v":13.3},"o3":{"v":57.1},"p":{"v":1002},"pm10":{"v":80},"pm25":{"v":137},"so2":{"v":2.1},"t":{"v":27},"w":{"v":3.6}},"time":{"s":"2020-05-02 00:00:00","tz":"+08:00","v":1588377600},"debug":{"sync":"2020-05-02T01:17:30+09:00"}}},

      result = Object
        .values(src.data.iaqi)
        .map(Object.values)
        .flat()
        
console.log(result)
.as-console-wrapper{min-height:100%;}

Если ваши внутренние объекты имеют структуру stati c (одиночная клавиша v), вы можете несколько сократить указанный выше

const src = {"status":"ok","data":{"aqi":137,"idx":1451,"attributions":[{"url":"http://www.bjmemc.com.cn/","name":"Beijing Environmental Protection Monitoring Center (北京市环境保护监测中心)"},{"url":"https://china.usembassy-china.org.cn/embassy-consulates/beijing/air-quality-monitor/","name":"U.S Embassy Beijing Air Quality Monitor (美国驻北京大使馆空气质量监测)"},{"url":"https://waqi.info/","name":"World Air Quality Index Project"}],"city":{"geo":[39.954592,116.468117],"name":"Beijing (北京)","url":"https://aqicn.org/city/beijing"},"dominentpol":"pm25","iaqi":{"co":{"v":5.5},"h":{"v":54},"no2":{"v":13.3},"o3":{"v":57.1},"p":{"v":1002},"pm10":{"v":80},"pm25":{"v":137},"so2":{"v":2.1},"t":{"v":27},"w":{"v":3.6}},"time":{"s":"2020-05-02 00:00:00","tz":"+08:00","v":1588377600},"debug":{"sync":"2020-05-02T01:17:30+09:00"}}},

      result = Object
        .values(src.data.iaqi)
        .map(({v}) => v)
        
console.log(result)
.as-console-wrapper{min-height:100%;}
0 голосов
/ 01 мая 2020

Я сделал обход вокруг, используя для ... в. Перебирая все записи объекта и распечатывая значение v.

var dataArray = {
  co: {
  v: 4.6
  },
  h: {
  v: 54
  },
  no2: {
  v: 9.2
  },
  o3: {
  v: 46.3
  },
  p: {
  v: 1002
  },
  pm10: {
  v: 70
  },
  pm25: {
  v: 137
  },
  so2: {
  v: 1.6
  },
  t: {
  v: 26
  },
  w: {
  v: 3.6
  }
}
for(const element in dataArray){
    console.log(dataArray[element]['v'])
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...