2016-08-18 2 views
1

У меня есть трехкомпонентный в узле, который использует Lodash isUndefined: sendUser.company = _.isUndefined(user.accounts[0].name) ? null : user.accounts[0].name; , но когда я пытаюсь запустить его я получаю TypeError: Cannot read property 'name' of undefined. Не уверен, что мне здесь не хватает.Lodash isUndefined обеспечивая неожиданный результат

+0

'user.accounts [0]' не определено так JS Не удается прочитать 'имя' свойства неопределенной – baao

ответ

0

Вы можете использовать _.get, чтобы сделать его безопасным:

sendUser.company = _.get(user, 'accounts[0].name') || null; 
+0

Спасибо за это. Глядя на документы, кажется, что другим способом написать это будет: 'sendUser.company = _.get (user, 'accounts [0] .name', null)' –

+0

@KlatchBaldar О, вы правы. Я пропустил это. Это еще более аккуратно. – Tholle

2

Похоже счета [0] может быть неопределенным тоже - так что вы должны проверить это тоже:

sendUser.company = ! user.accounts[0] || _.isUndefined(user.accounts[0].name) ? null : user.accounts[0].name; 
+0

Проверка, что 'user.accounts [0]' определяется, фиксирует проблему; есть ли неопределенный чек, который будет пузыриться через свойства? –

+0

Я так не думаю @KlatchBaldar – baao

2

Вы уверены, что user.accounts [0] фактически определяется?

Похоже, вы пытаетесь проверить, не определено ли «имя». Из того, что я понимаю в _isUndefined(), он будет искать только определенное значение и, следовательно, не может проверить состояние свойства .name как user.accounts [0] сам не определено.

Вы всегда можете проверить его и перед проверкой свойства .name.

+0

Проверка того, что 'user.accounts [0]' определена, устраняет проблему; есть ли неопределенный чек, который будет пузыриться через свойства? –

 Смежные вопросы

  • Нет связанных вопросов^_^