【问题标题】:How can I get the last object in this JSON array?如何获取此 JSON 数组中的最后一个对象?
【发布时间】:2021-12-26 23:05:45
【问题描述】:

我正在尝试使用来自足球统计 API 的球员数据,但我似乎无法获取当前赛季的数据(可以在数组中的最后一个对象中找到)。出于某种原因,我只获取第三个索引的数据(下面的代码)。

    .then(data => {
        //BIO
        const bio = data['data'][0]
        const nameValue = bio['fullname']
        const imageValue = bio['image_path']
        const teamValue = bio['team']['data']['name']
        const countryValue = bio['nationality']
        const birthdateValue = bio['birthdate']
        const heightValue = bio['height']
        const positionValue = bio['position']['data']['name']
        //STATS
        const stats = bio['stats']['data']['data'.length - 1]
        const appearancesValue = stats['appearences']

这是我尝试访问的 JSON 数据的图像。在这种情况下,我应该从 [4] 获取数据,但我从 [3] 获取数据。

我很缺乏经验,所以我觉得我一定在某个地方犯了一个愚蠢的错误!感谢任何帮助。

【问题讨论】:

  • 方括号符号的过度使用可能会使 OP 感到困惑......像这样写它这……const lastStatsItem = bio.stats.data[bio.stats.data.length - 1]……可能会把事情弄清楚。
  • 谢谢,这确实让我有些困惑!感谢您的帮助。

标签: javascript json api


【解决方案1】:

bio['stats']['data']['data'.length - 1] 部分中的'data'.length 将评估为"data" 字符串的length。所以它总是 4。

你很可能想要数组的长度,所以它应该是

bio['stats']['data'][bio['stats']['data'].length - 1]

为了清楚起见,您也可以预先将其提取到变量中

const dataLength = bio['stats']['data'].length;
const stats = bio['stats']['data'][dataLength - 1];

此外,由于您对对象属性使用文字,因此您不需要使用 [] 表示法。

const dataLength = bio.stats.data.length;
const stats = bio.stats.data[dataLength - 1];

您也可以对其余代码执行此操作,以避免输入所有 ['..']

【讨论】:

  • 非常感谢,它成功了!我也从您的回答中学到了很多 - 非常感谢。
【解决方案2】:

以亨利·沃克的回答为基础。
使用新的 JavaScript Array.at() 方法,您可以输入正索引和负索引。 这段代码:

const dataLength = bio.stats.data.length;
const stats = bio.stats.data[dataLength - 1];

可以简单翻译为:

const stats = bio.stats.data.at(-1);

给你数组中的最后一个元素。

【讨论】:

    【解决方案3】:

    正如数据对象所表示的,它有 5 个对象,您可以将此特定对象放在第 3 位,因为在数组中第一个值存储在索引 0 处。尝试使用此代码获取最后一个对象

    var lastObject = bio.stats.data[bio.stats.data.length-1].player_id
    

    【讨论】:

      猜你喜欢
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      • 2018-11-28
      • 2022-11-14
      • 2017-11-08
      • 1970-01-01
      相关资源
      最近更新 更多