Объект объектов, всегда возвращающий неопределенный с $ .each - PullRequest
0 голосов
/ 20 июня 2019

Возможно, что-то глупое, но у меня есть status JS объект объектов (полученный с помощью console.log (status) ):

{1: {…}, 2: {…}, 10: {…}} 1: error: true __proto__: Object 2: validated: false value: 0 whitelist: false __proto__: Object 10: validated: false value: 0 whitelist: false __proto__: Object __proto__: Object

Тогда у меня есть:

$.each( status, function( key, value ) { console.log(key); console.log(value) });

Который печатает соответственно 1, 2 и 10 для клавиш и ...

{} error: true __proto__: Object

{} validated: false value: 0 whitelist: false __proto__: Object

{} validated: false value: 0 whitelist: false __proto__: Object

... для значений.Все идет нормально.Но затем, когда я пытаюсь получить доступ к любому ключу внутренних объектов , скажем, например,

$.each( status, function( key, value ) { console.log(value.validated); console.log(value['error']) });

... я получаю undefined вв любом случае: использование точечного синтаксиса, синтаксиса массива и так далее.Любая идея?

РЕДАКТИРОВАТЬ : Странно, это не из-за $.each, потому что выполнение простого

console.log(status[1]['error']) возвращает undefined когда status[1] продолжает возвращаться { error: true }.

1 Ответ

0 голосов
/ 20 июня 2019

Ваш массив содержит различные свойства, поэтому доступ к свойству error вернет undefined, поскольку он не существует ни в индексе 1, ни в 2, а только в 0.

$.each (status, function(i, item)
{
    if (item.error != undefined)
        // do something

    if (item.validated != undefined)
        // do something
});

Наконец, о вашем редактированиии, как сказано в моем первом абзаце, свойство error не существует в индексе 1, поэтому следующий код должен возвращать ожидаемый результат.

console.log(status[0].error);

...