У меня есть трехкомпонентный в узле, который использует Lodash isUndefined: sendUser.company = _.isUndefined(user.accounts[0].name) ? null : user.accounts[0].name;
, но когда я пытаюсь запустить его я получаю TypeError: Cannot read property 'name' of undefined
. Не уверен, что мне здесь не хватает.Lodash isUndefined обеспечивая неожиданный результат
ответ
Вы можете использовать _.get, чтобы сделать его безопасным:
sendUser.company = _.get(user, 'accounts[0].name') || null;
Спасибо за это. Глядя на документы, кажется, что другим способом написать это будет: 'sendUser.company = _.get (user, 'accounts [0] .name', null)' –
@KlatchBaldar О, вы правы. Я пропустил это. Это еще более аккуратно. – Tholle
Похоже счета [0] может быть неопределенным тоже - так что вы должны проверить это тоже:
sendUser.company = ! user.accounts[0] || _.isUndefined(user.accounts[0].name) ? null : user.accounts[0].name;
Проверка, что 'user.accounts [0]' определяется, фиксирует проблему; есть ли неопределенный чек, который будет пузыриться через свойства? –
Я так не думаю @KlatchBaldar – baao
Вы уверены, что user.accounts [0] фактически определяется?
Похоже, вы пытаетесь проверить, не определено ли «имя». Из того, что я понимаю в _isUndefined(), он будет искать только определенное значение и, следовательно, не может проверить состояние свойства .name как user.accounts [0] сам не определено.
Вы всегда можете проверить его и перед проверкой свойства .name.
Проверка того, что 'user.accounts [0]' определена, устраняет проблему; есть ли неопределенный чек, который будет пузыриться через свойства? –
'user.accounts [0]' не определено так JS Не удается прочитать 'имя' свойства неопределенной – baao