Форматориванный вывод чисел(фукнция).
Друзья ,нужна ваша помощь!В общем задача такая:Нужно написать функцию, которая принимает первым параметром число ,а вторым количество столбцов для вывода.
Например: mySuperFunction(12,3); Вывод в консоли должен быть таким: 1 5 9 2 6 10 3 7 11 4 8 12 Буду очень благодарен помощи! P.S немного стыдно за такой вопрос... Вот что выходит у меня
function printNumbers(number,rows){
var totalNumbesPerLine = 0;
var output = '';
var sum = Math.ceil(number / rows);
for(var i = 1;i<=number;i++){
totalNumbesPerLine++;
output += i;
setBreak();
}
console.log(output);
function setBreak(){
if(totalNumbesPerLine == sum){
output +='\n';
totalNumbesPerLine = 0;
}else{
output +=' ';
}
}
}
|
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Спойлеры</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<link rel="stylesheet" href="test.css">
</head>
<body>
<script>
var func = function(m, n){
var k = Math.floor(m/n);
var foo = '';
for (var i = 1; i<=k; i++) {
for(var j = 1; j<=n;j++){
foo += k*(j-1)+i+' ';
}
console.log(foo+"\r\n");
foo = "";
}
};
func(12,3);
</script>
</body>
</html>
|
большое спасибо!
|
|
EmperioAf,
а func(13,3); ??? |
var myfunc = function(arr, n){
var i=0, a;
function replacer(str, p){a='\n'; if(++i%n)a=' '; return p+a;}
return arr.toString().replace(/(\d+)(?:,|$)/g,replacer);
}
var arr = [1,5,9,2,6,10,3,7,11,4,8,12];
alert(myfunc (arr,3))
alert(myfunc (arr,5)) //Ващет нун число пробелов равнять при большом числе столбцов
Либо через табуляцию, либо HTML таблицей) Ибо цифры могут быть и двухзначными и однозначными и т.д.
var myfunc = function(arr, n){
var i=0, a;
function replacer(str, p){a='\n'; if(++i%n)a='\t'; return p+a;}
return arr.toString().replace(/(\d+)(?:,|$)/g,replacer);
}
var arr = [1,5,9,2,6,10,3,7,11,4,8,12];
alert(myfunc (arr,3))
alert(myfunc (arr,5))
var myfunc = function(arr, n){
var i=0, a, b='', s = String.fromCharCode(160);
function replacer(str, p){
b='\n'; a = (s+s+s+s).substr(p.length); if(++i%n)b='';
return a+p+s+b;
}
return arr.toString().replace(/(\d+)(?:,|$)/g,replacer);
}
var arr = [1,5,9,2,6,10,3,7,11,4,8,12];
alert(myfunc (arr,3))
alert(myfunc (arr,5))
alert(myfunc (arr,6))
|
Deff,
не обязательно myfunc (arr,3), можно первым аргументом передавать длину массива по которой его создавать (жаль что .fill() не все поддерживают), а потом деление по модулю второго аргумента. |
laimas,
:dance: А я ток допёр, что массив от 1-до 12, я то смотрел по строкам |
Цитата:
|
Цитата:
|
Цитата:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>ГГ</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>
<script>
var func = function(m, n){
var k = Math.ceil(m/n);
var foo = '';
for (var i = 1; i<=k; i++) {
for(var j = 1; j<=n;j++){
if (k*(j-1)+i<=m)
foo += k*(j-1)+i+' ';
}
console.log(foo+"\r\n");
foo = "";
}
};
func(13,3);
</script>
</body>
</html>
|
Ну это в примере 1-12, но это же не значит, что это так и будет, тогда и функции не надо, а может быть и func(13,3), и 11, 234 :)
|
laimas,
Да хоть от n до 1000, я не прочитал, что последовательность Цитата:
|
Друзья, спасибо вам большое за ваши ответы!Рад что тут такое активное сообщество!
|
console.table([[1,5,9],[2,6,10],[3,7,11],[4,8,12]]); :) |
| Часовой пояс GMT +3, время: 06:36. |