У меня есть небольшая проблема в Javascript, когда объекты обрабатываются каким-то странным (если не сказать наименьшим образом) способом, если только я чего-то не пропускаю.Ошибка говорит, что «объект имеет значение null», если один из свойств объекта имеет значение null
У меня есть объект с именем state
. Когда я console.log(state)
я получаю это:
На данный момент, я стараюсь идти через объект с помощью JQuery-х each
:
$.each(state, function (i, sobj) {
if(mid == sobj.user_id)
//some stuff;
});
Однако, здесь я получаю сообщение об ошибке говорящее TypeError: sobj is null
. Я обнаружил, что это связано с тем, что свойство trump
внутри объекта (см. Изображение выше) инициализируется null
. При любом другом значении он работает. Очевидно, я могу исправить это, инициализируя его до 0 или что-то в этом роде, но это наводит меня на концептуальный уровень: почему не должно быть разрешено иметь одно из свойств null
? Для меня не имеет смысла, что я должен получить сообщение об ошибке, когда весь объект имеет значение null, когда я прохожу через него так, только потому, что одно из свойств имеет значение null. Я не пытался ничего делать с этим свойством.
Итак, может кто-нибудь сказать мне, почему это происходит (Google не помогает), и если есть способ исправить это, кроме очевидного «не позволяйте чему-либо быть нулевым в объекте»?
«Почему одно из свойств не должно иметь нулевое значение?» Ну, свойства * * имеют значение null в качестве значения. Но если одно из свойств имеет нулевое значение, то вы * не * разрешаете получать его 'user_id' (потому что' null' не имеет 'user_id') – Gareth
На мой взгляд, ваш объект' state' должен иметь новое свойство 'seat', которое содержит массив объектов' user'. Затем вы можете перебирать только те, которые не нужны для итерации * все * свойства состояния – Gareth
Будет ли это экономить время по производительности или это всего лишь случай «лучшей практики»? – jovan