Почему получение элемента из объекта возвращает неопределенное значение?

Я пытаюсь получить элемент "Ошибки" из объекта ниже:

{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

Объект включается в массив объектов как ответ на вызов ajax, сделанный конечной точке API.

    $.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. Пожалуйста, опубликуйте минимальный воспроизводимый пример как текст, а не как изображение (не публикуйте изображения кода)
CertainPerformance 17.02.2019 23:25

Предполагая, что это опечатка, вам нужно предоставить некоторый контекст для кода, например, это происходит в результате асинхронного вызова?

Dave Newton 17.02.2019 23:29

Я добавил еще немного кода, чтобы объяснить, что я делаю.

IordanouGiannis 17.02.2019 23:38

Первая буква Εrror — греческая Ε, так что исправьте свой бэкенд. (голосование за закрытие как опечатка)

Gabriele Petrioli 17.02.2019 23:43

Вот почему Εrrors здесь не выделено.

Sebastian Simon 17.02.2019 23:45

@GabrielePetrioli Это была просто орфографическая ошибка здесь и в моем реальном коде. В частности, не в моем коде js, а в методе просмотра django.

IordanouGiannis 17.02.2019 23:46

@GabrielePetrioli, я тоже проголосовал за закрытие. Спасибо за простое, но очень полезное наблюдение. Хотя KeyError, как в Python, был бы очень полезен.

IordanouGiannis 17.02.2019 23:52

Добро пожаловать, я тоже грек и предположил, что ваше имя такое же, и поэтому подумал, что это может быть такой проблемой ..

Gabriele Petrioli 17.02.2019 23:53
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
8
53
1

Ответы 1

Вам нужно использовать все квадратные скобки [] для этого:

rowData["Errors"];

Но так как это имя свойства без пробелов и специальных символов, вы можете использовать простую запись через точку, которая будет работать идеально:

rowData.Errors;

Я пробовал то, что вы упомянули, с тем же результатом, к сожалению.

IordanouGiannis 17.02.2019 23:33

Можете ли вы опубликовать объект rowData в виде кода, а не изображения? Возможно, у вас есть вложенные объекты, но мы не можем сказать об этом из-за презентации.

Jack Bashford 17.02.2019 23:35

Другие вопросы по теме