【问题标题】:Why getting an item from an object returns undefined? [closed]为什么从对象中获取项目返回未定义? [关闭]
【发布时间】:2019-02-17 22:24:34
【问题描述】:

我正在尝试从下面的对象中获取“错误”项:

{Id: 15, Date: "22-02-2019", Time: "22:45", Sport: "Football", Country: "United Kingdom", …}
    Bet: "Win"
    Bookie: "Bet365"
    Competition: "Premier League"
    Country: "United Kingdom"
    Currency: "Euro"
    Date: "22-02-2019"
    Home: "Cardiff"
    Id: 15
    Odds: "1.45"
    Sport: "Football"
    Stake: "5.110"
    Status: "Won"
    Time: "22:45"
    Visitor: ""
    Εrrors: Array(2)
        0: (2) ["date", Array(1)]
        1: (2) ["visitor", Array(1)]
        length: 2
        __proto__: Array(0)
    __proto__: Object

对象包含在对象数组中,作为对 api 端点的 ajax 调用的响应。

    $.ajax({
        type: "POST",
        url: "/api/import",
        headers: {"X-CSRFToken": Cookies.get('csrftoken')},
        data: formData,
        cache: false,
        contentType: false,
        processData: false,
        success: function (res) {
        ....}
    })

调用rowData["Date"] 或rowData["Time"] 会返回相应的值。

如果我这样做rowData["Errors"],我会得到undefined。我不知道是找不到 Errors 属性还是其他原因。

我需要获取错误,以便遍历它们并将它们显示在页面上。

我主要将 JS 用于 DOM 操作,这真的让我很难过。

这里的教训是要注意你的拼写,尤其是那些可能用英语和你的语言共享的字母。

【问题讨论】:

  • rowData{"Errors"] 应该抛出一个SyntaxError,而不是返回undefined。请将minimal reproducible example 发布为文本,而不是图片(请勿发布代码图片)
  • 假设这是一个错字,您需要为代码提供一些上下文,例如,这是异步调用的结果吗?
  • Εrror的第一个字母是希腊语Ε,所以修复你的后端。 (投票结束是一个错字)
  • @GabrielePetrioli 我也投票决定关闭。感谢您的简单但非常有用的观察。虽然,像 Python 中这样的 KeyError 会非常有用。
  • 不客气,我也是希腊人,并以你的名字假设,所以认为这可能是一个问题..

标签: javascript arrays object ecmascript-6


【解决方案1】:

您需要为此使用所有方括号[]:

rowData["Errors"];

但由于这是一个没有空格或特殊字符的属性名称,您可以使用简单的点表示法,它会很好地工作:

rowData.Errors;

【讨论】:

  • 不幸的是,我已经尝试过您提到的相同结果。
  • 您可以将rowData 对象作为代码而不是图像发布吗?您可能有嵌套对象,但由于演示文稿,我们无法判断。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-24
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
相关资源
最近更新 更多