2016-05-10 2 views
0

Можно ли упростить вторую линию, сохраняя код в трех строках одновременно? current должно иметь значение «ошибка».Перерыв изнутри oneliner

for item in [ 1, 2, 3, undefined, 5, 6] 
    break if (current = if item? then item else "error") is "error" 
console.dir current 

Я пытался сделать что-то подобное, что не повезло:

for item in [ 1, 2, 3, undefined, 5, 6] 
    current = if item? then item else "error", break 
console.dir current 
+0

Может быть, вы должны начать с простой постановке задачи вашего цикл пытается решить, а не пытаться заставить петлю быть компактным непрозрачным беспорядком: меньше строк, не означает лучший код, довольно часто это наоборот. Вы действительно пытаетесь сказать «ошибка», если что-либо в цикле «null» или «undefined» и в противном случае захватывает последний элемент массива? –

+0

Нет, '' error'' - это просто пример. Исходный случай более сложный и даже не имеет дело с массивом в прямой форме. Вы правы в отношении меньшего количества строк и лучшего кода, но, с другой стороны, ничто не запрещает мне искать более элегантные строки, которые улучшали бы код, пока у меня есть время искать его. – user619271

ответ

1

Здесь является один лайнер, что это лучший способ я нашел, чтобы записать его в кофе, но не будет в производстве , поэтому мои коллеги не убьют меня, читая его.

break for item in [ 1, 2, 3, undefined, 5, 6] when (current = item ? 'error') is 'error' 
console.dir current 

Существует на самом деле много способов написать это, с точно таким же выходом в Javascript.

С уважением,

+0

Это интересно. Спасибо. – user619271

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