javascript - 我如何始终从 API 调用中选择最后一个 JSON 对象?

标签 javascript json

所以我对 JavaScript 还比较陌生。如果我不太忙的话,也许每个月我会尝试几次尝试一些事情并练习一些东西。

我从事股票工作已经有一段时间了,我看到有一些相当不错的免费 API 可以获取市场数据。我想这将是再次闲逛并可能学到一些东西的好时机(如果是这样,希望保留它)。

我正在使用 ( https://www.alphavantage.co/ ) 的 Alpha Vantage API,它返回一个包含大量数据的 JSON(这里是来自他们网站的演示 JSON,以便您了解我的调用返回的内容(我使用1 分钟间隔,他们的演示使用 5 分钟,但这并不重要): https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=MSFT&interval=5min&outputsize=full&apikey=demo )。

我想选择“时间序列 (Xmin)”对象中的最后一个(最近的日期/时间)对象,以便我可以使用最新日期对象中的更新数据。

我尝试了一些在网上看到的不同解决方案来选择数组/对象中的最后一项,但由于我是个菜鸟,我确信我错过了一些非常简单的东西。或者也许我根本没有以正确的方式处理这个问题。 (我什至浪费了一个小时尝试格式化 JS 内置日期方法的返回值以匹配 API 调用日期格式“YYYY/MM/DD HH:MM:SS”,然后使用它以某种方式选择与 JSON 中匹配的日期但最终对我来说并没有成功,然后我想为什么我不尝试选择最后一个对象。...已经晚了...)

fetch(api)
          .then(response => {
            return response.json();
          })
          .then(data => {
            console.log(data["Time Series (1min)"]);
            let dataProvided = data["Time Series (1min)"];

            //my attempt to select the last 'date' (for example 2019-07-26 16:00:00 would be the last one as of friday)
            //this returns undefined when console.log
            dataProvidedRecentDate = dataProvided[dataProvided.length - 1];

            //undefined
            console.log(dataProvidedRecentDate);

            //this is manually just to see... (not my goal obviously)
            dataProvidedSpecificDate = dataProvided["2019-07-26 16:00:00"];
            dataProvidedVolume = dataProvidedSpecificDate["5. volume"];



            let changeData = document.querySelector('.test_three');
            changeData.textContent = dataProvidedVolume;

而不是记录最后一个(最近的)日期对象。我收到未定义。我尝试过在网上其他地方看到的切片方法,但它也不起作用。如果您猜不到的话,我的最终目标是显示页面上显示的最新日期对象内的数据(例如成交量、开盘价、收盘价、最高价、最低价)。非常感谢任何帮助,我很高兴看到我做错了什么,因为我一直在拔头发。谢谢!

最佳答案

您可能没有注意到,但最新数据是对象的第一个属性,而不是最后一个。没有内置方法来访问对象的第一个属性,但您可以使用 for..in 循环。 for..in 本质上是一个迭代对象属性的迭代器。 你可以做这样的事情

let recent;
for(recent in data["Time Series (5min)"])break;

这会将data["Time Series (5min)"]第一项的键存储在recent中,然后中断循环。 您现在拥有第一项的 key ,并且要访问其值,只需使用简单的括号表示法即可。 数据[“时间序列(5分钟)”][最近]

关于javascript - 我如何始终从 API 调用中选择最后一个 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57238428/

相关文章:

json - autopulous-xdom2jso 中的“xdom 未定义”错误

javascript - 使用数据 : URI? 时有什么方法可以指定建议的文件名

javascript - 为什么我们不在 window.onload 中使用 () ?

javascript - Ember : How do I inject into a view?

javascript - Angular 4 + ng2-datetime jQuery 问题

python - 将以前的文件大小与当前文件大小和标志进行比较

javascript - 从 JSON 中获取所有数据并通过方法的类以 HTML 形式显示

javascript - 如何在 target 和 currentTarget 之间切换元素的类?

javascript - Django:从模型创建 JSON 对象以返回模板

java - 将嵌套 JSON 表示为 Neo4j (SDN) 中的节点