Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Форматориванный вывод чисел(фукнция). (https://javascript.ru/forum/misc/57275-formatorivannyjj-vyvod-chisel-fuknciya.html)

try_ 28.07.2015 00:27

Форматориванный вывод чисел(фукнция).
 
Друзья ,нужна ваша помощь!В общем задача такая:Нужно написать функцию, которая принимает первым параметром число ,а вторым количество столбцов для вывода.
Например:
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 +=' '; 
		}
		
		
	}
}

EmperioAf 28.07.2015 00:50

<!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>

try_ 28.07.2015 00:54

большое спасибо!

рони 28.07.2015 06:08

try_,
Прорисовать цифры в определенном порядке.
JavaScript/jQuery сортировка элементов DOM

рони 28.07.2015 06:12

EmperioAf,
а func(13,3); ???

Deff 28.07.2015 08:33

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))

laimas 28.07.2015 10:09

Deff,
не обязательно myfunc (arr,3), можно первым аргументом передавать длину массива по которой его создавать (жаль что .fill() не все поддерживают), а потом деление по модулю второго аргумента.

Deff 28.07.2015 10:14

laimas,
:dance: А я ток допёр, что массив от 1-до 12, я то смотрел по строкам

laimas 28.07.2015 10:15

Цитата:

Сообщение от Deff
тады выравнивать строки ток табуляцией или таблицей HTML

Это почему? Разве запретно дополнить массив незначащими значениями до кратного второму аргументу? :)

laimas 28.07.2015 10:25

Цитата:

Сообщение от Deff
А я ток допёр

Собственно лишних телодвижений и не нужно, то что элементов массива 11, а делим по модулю 3, это не помеха получить колонки. Но если длина массива приличная, и это не просто вывод циферек, то можно дополнить массив до кратного делимому и обрабатывать массив сразу с двух сторон.


Часовой пояс GMT +3, время: 00:44.