2015-09-11 6 views
-1

Так что я пытаюсь написать шаблон функции, который создает следующий шаблон до n рядов строк. Если аргумент равен 0 или отрицательному целому числу, тогда он должен возвращать «" т.е. пустую строку.пытается понять этот шаблон функции

123456 
23456 
3456 
456 
56 
6 

Я пытаюсь понять решение этого вопроса, как показано ниже:

function pattern(n){ 
var output=""; 
    for(i=1;i<n+1;i++){ 
    for(j=i;j<n+1;j++){ //what is the purpose of this j loop? 
     output += j; 
    } 
    if(i!=n) output +="\n"; //I know \n can jump to next line, but what does this if statement mean? why I!=n? 
    } 
return output; 
} 
+0

J управляет контуром, где, чтобы начать текущие номера строк. Цикл i управляет количеством строк. Конечная инструкция if не добавляет новую строку в итоговую строку. –

ответ

2
// function definition 
function pattern(n){ 
// declare a variable to collect the lines 
var output=""; 
    // there are n lines 
    for(i=1;i<n+1;i++){ 
    // each line starts with the linenumber and ends with n 
    // so take a loop from i to n 
    for(j=i;j<n+1;j++){ 
     // collect the numbers of each line as a string in the declared variable 
     output += j; 
    } 
    // if i!=n means: not the last line 
    if(i!=n) output +="\n"; 
    } 
// return the result of this function 
return output; 
} 

UPDATE

Но, пожалуйста, позвольте мне отметить, что данная решение не очень умное. Взгляните на следующий код:

Array.range = function(start, end) { 
    return Array.apply(null, Array(end+1)).map(function (_, i) {return i;}).slice(start); 
} 

function pattern(n){ 
    var startValues = Array.range(1,n); 
    return startValues.map(function(i) { return Array.range(i,n); }).join('\n'); 
} 

http://jsfiddle.net/afmchdwp/

Сначала определим статический метод Array.range, который помогает нам определить количество диапазонов в JavaScript.

Функция шаблона теперь может использовать эти диапазоны для создания нужных вам чисел. Первая строка функции создает диапазон от 1..n (начальные числа строк).

Вторая строка проходит через этот массив и преобразует каждое значение 1..n в диапазон от linenumber до n. С .join() вы можете комбинировать символы каждой строки и комбинировать сами строки.

ОБНОВЛЕНИЕ 2

Здесь обновляется скрипку без разделенных запятой числа (с использованием присоединиться внутри затвора): http://jsfiddle.net/afmchdwp/1/

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