2016-11-26 8 views
-4

Как вы можете оптимизировать следующий JS заявление:Javascript Простые головоломки

obj.endDate = obj.status && (obj.status.length == 2 || (obj.status.length == 1 && obj.status[0] == 0)) ? undefined : obj.endDate; 

где

obj.status имеет тип массива и имеет право принимать только следующие значения:

  1. [1 ]
  2. [0]
  3. [1,0]
  4. неопределенный

obj.status может или не может быть неопределенными.

+1

Вопросы по улучшению рабочего кода лучше всего задавать в [Обзор кода] (http://codereview.stackexchange.com/). – lenz

+0

Если вы имеете в виду оптимизировать что-то вроде «как я могу сделать этот код более понятным», тогда мы должны лучше понять, чего вы хотите достичь. Я понял следующее из вашего кода: 'if_Array_has_two_values ​​или Array_has_one_value_and_it_is_zero', а затем установить endDate в undefined. Поэтому я предполагаю, что есть причина для этого. Если вы можете объяснить логику этой проверки, это может помочь создать некоторые функции со значениями полных имен. Что это значит '(если obj.status == [0] или obj.status == [1,0])' Это означает что-то вроде 'contract not terminated'? – surfmuggle

ответ

1

Проблема на самом деле не оптимизирует его. Проблема в том, что она неразборчива. Вы или кто-то еще будет благодарен позже, когда вы прочтете этот код позже, чтобы увидеть, как он распался на какой-то if/else или по крайней мере разложил его немного с некоторым явным наименованием.

+0

Активировано для указания разницы между оптимизацией и общей очисткой. Не могли бы вы показать пример? – byxor