Хотите сократить мое заявление if, используя Lodash - PullRequest
0 голосов
/ 12 мая 2018

Я хочу оптимизировать приведенный ниже фрагмент кода с помощью Lodash.Я искал решения в Интернете, но не смог найти ничего актуального.Может кто-нибудь, пожалуйста, помогите?

if (isPage && isPageType === constants.keys.isDisclosureSubmitted) {
    if (form && form.application && typeof form.application.disclosureAccepted !== 'undefined' && form.application.disclosureAccepted !== null && !form.application.disclosureAccepted) {
        return $q.when(response.data.content);
    }
}

1 Ответ

0 голосов
/ 12 мая 2018
if (isPage && isPageType === constants.keys.isDisclosureSubmitted) {
  const discAcc = _.get(form, ['application', 'disclosureAccepted'], true);
  if (!_.isNil(discAcc) && !disAcc) {
     return $q.when(response.data.content);
  }
}

По сути, с _.get вам не нужно беспокоиться о проверке свойства undefined, поскольку в этом случае он просто вернет undefined, а не выдаст ошибку.Проверка _.isNil означает, что значение является как нулевым, так и неопределенным, а затем вы хотите убедиться, что значение по-прежнему ложное.

Я имею в виду, я не уверен, что lodash "оптимизирует" в этом случае, так какэти вызовы функций на самом деле замедляют его, но он немного более читабелен.Как и комментарии, я не совсем уверен, почему вы должны быть такими конкретными;вы могли бы просто использовать _.get (form, ['application', 'disclosureAccepted']) == false, хотя я не одобряю использование строгой эквивалентности.

...