首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从api响应中打印一项?

如何从api响应中打印一项?
EN

Stack Overflow用户
提问于 2022-04-27 18:13:40
回答 2查看 355关注 0票数 0

我制作了一个应用程序,你可以在网站上看到雨的百分比。我用开胸疗法来获取数据。但是api响应输出了很多数组。怎么才能把它切成一个?(我要打印的数组的第一个零)我会发布回复的图片。

以下是代码:

代码语言:javascript
复制
const api_url = 'https://api.openweathermap.org/data/2.5/onecall?lat=52.1092717&lon=5.1809676&&exclude=current,minutely,timezone,alerts&appid=add524720c6b11d0649d761f76e953c8';
async function getRain() {
  const response = await fetch(api_url);
  const data = await response.json();
  const {
    hourly
  } = data;
  const popArr = hourly.map(element => element.pop);
  hourly.forEach(element => {
    console.log(element.pop);

  });
  // document.getElementById('pop').textContent = pop;
  document.getElementById('pop').textContent = popArr;
}
getRain();
代码语言:javascript
复制
<div id="maintext">
  <p>De regen percentage is: <br><span id="pop"></span>%</p>
</div>

EN

回答 2

Stack Overflow用户

发布于 2022-04-27 18:25:16

你的数据每小时来一次。也许你现在想表现一下?

代码语言:javascript
复制
const api_url = 'https://api.openweathermap.org/data/2.5/onecall?lat=52.1092717&lon=5.1809676&&exclude=current,minutely,timezone,alerts&appid=add524720c6b11d0649d761f76e953c8';
async function getRain() {
  const response = await fetch(api_url);
  const data = await response.json();
  const { hourly } = data;
  const popList = {}
  hourly.forEach(({dt,pop}) => popList[new Date(dt*1000).toLocaleString().split(",")[1].trim()] = pop);
  const time = `${new Date().toLocaleString().match(/(\d{2}):/)[1]}:00:00`;
  document.getElementById('pop').innerHTML = `${time}: ${popList[time]}%`; // percentage at nearest hour
}
getRain();
代码语言:javascript
复制
<div id="maintext">
  <p>De regen percentage is: <br><span id="pop"></span></p>
</div>

票数 1
EN

Stack Overflow用户

发布于 2022-04-27 19:09:59

您应该只从逐时数组中获得第一项:

代码语言:javascript
复制
const api_url = "https://api.openweathermap.org/data/2.5/onecall?lat=52.1092717&lon=5.1809676&&exclude=current,minutely,timezone,alerts&appid=add524720c6b11d0649d761f76e953c8";

async function getRain() {
  const response = await fetch(api_url);
  const data = await response.json();
  const { hourly } = data; // get hourly data in array of objects form

  // THE CRUCIAL CODE YOU FORGOT
  // You must ONLY GET THE FIRST ITEM from the "hourly" array
  const firstHourData = hourly[0]; // Get the first hour data object from "hourly" array

  document.getElementById("pop").textContent = firstHourData.pop;
}

getRain();
代码语言:javascript
复制
<div id="maintext">
 <p>De regen percentage is: <br /><span id="pop"></span>%</p>
</div>

替代方式( JS编码器常用的方式)

代码语言:javascript
复制
const api_url = "https://api.openweathermap.org/data/2.5/onecall?lat=52.1092717&lon=5.1809676&&exclude=current,minutely,timezone,alerts&appid=add524720c6b11d0649d761f76e953c8";

async function getRainSimplified() {
  await fetch(api_url)
    .then((response) => {
      return response.json();
    })
    .then(({ hourly }) => {
      document.getElementById("pop").textContent = hourly[0].pop;
    });
}

getRainSimplified();
代码语言:javascript
复制
<div id="maintext">
 <p>De regen percentage is: <br /><span id="pop"></span>%</p>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72033509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档