2015-04-17 2 views
-1
sheet = [1,2,3,4,5,6,7,8,9,10] 
myArray = [] 
batchSize = 0 
sheetSize = sheet.length 

eat = (item) -> 
    loop 
    batchSize++ 
    sheetSize-- 
    myArray.push item 
     break unless batchSize < 2 or sheetSize > 0 
    batchSize = 0 
    document.write "myArray", myArray 
    myArray = [] 

eat item for item in sheet 

http://codepen.io/nottinhill/pen/dobXvEНемеченому перерыв должен быть в петле в CoffeeScript

Я хочу выше код, чтобы распечатать:

1,2 
3,4 
5,6 
7,8 
9,10 

Однако это не работает, в противном случае с unlabeled break must be in loop

+0

Я получаю предупреждение «неожиданное отступы». Также этот алгоритм, скорее всего, не сработает. Вы хотите «съесть» содержимое массива? то '...' может пригодиться, если вам не нужны размеры, которые у вас есть в переменных. Если вы хотите, чтобы это было более переменным, взгляните на 'Array.slice' –

+1

Вот [два рекурсивных решения для вашей проблемы] (http://codepen.io/anon/pen/eNOzwb) –

+0

Полностью забыл о рекурсивности. Это то, что будет работать в компании традиционных СМИ. – nottinhill

ответ

1

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

Рекурсивный:

eatVar = (batch_Size) -> 
    eatSome = (sheet, start = 0) -> 
    sheet.slice start,batch_Size 
    end = start+batch_Size 
    document.write sheet.slice start, end 
    document.write "<br>" 
    eatSome sheet, end if end < sheet.length 

Как к последней строке: оно эквивалентно

if end < sheet.length 
    eatSome sheet, end 

Но вы не обязаны рекурсии:

eatVar2 = (batch) -> (sheet, start) -> 
    position = 0 
    for elem in sheet 
    document.write elem 
    document.write if ++position % batch then ', ' else '<br>' 

(eatVar2 2) sheet 

Вот является Codepen , Я действительно надеюсь, что это какое-то задание, потому что я очень не рекомендую вам использовать document.write. Есть более эффективные способы генерации HTML, такие как document.body.appendChild document.createTextNode "foobarbaz"

+0

Спасибо, Патрик! Я использую 'document.write' только для CodePen, в прошлый раз, когда я использовал' document.write' в производстве, был 1992. Эта функция является абстрактной формой моего обходного метода Mongoose для Node MongoDB Native Driver 100-Batch Limit Problem, который Я могу опубликовать в своем блоге. – nottinhill

+1

Эй, я обновил ручку, теперь есть версия с переменной функцией, которую вы можете заменить с помощью записи документа. Надеюсь, поможет. –

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