Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Создание таблицы в консоли (https://javascript.ru/forum/misc/69013-sozdanie-tablicy-v-konsoli.html)

Mixpix 24.05.2017 13:21

Вывод таблицы в консоли
 
Вложений: 1
Всем привет.

Помогите пожалуйста новичку. Написал следующий код:

function Table() {
  var data = "Имя;Улица;Город;Возраст\nВладимир Есенин;ул. Пушкина 13;Москва;42\nМарина Шмидт;ул. Максима Горького;Красноярск;43";
  var strListe = data.split(";");
  var res = "";
  for (var i = 0; i < data.length; i++) {
    res = res + strListe[i];
  }
  res = strListe
    .reduce(function(agg, elem) {
      return agg + " | " + elem;
    })
  return res;
}
console.log(Table())


Как сделать чтобы таблица была ровной и именно в консоли? Я понимаю что нужно найти размер самой большой длины текста и сделать это именно в столбце, но как не представляю.

На скрине показал как должно выглядеть.

ksa 24.05.2017 13:49

Цитата:

Сообщение от Mixpix
Как сделать чтобы таблица была ровной и именно в консоли?

Данные у тебя плохо организованы... :(
Первая и последняя "колонка" твоей "таблицы" объединены. Это нужно исправить.

Потом придется сделать массив максимальных длин колонок... После этого получится вывести как ты задумал.

Rise 25.05.2017 03:45

Mixpix, есть такой символ \t табуляция:
console.log('qqq\t | www\t | eee\t | rrr\n1\t | 2\t | 3\t | 4\n5\t | 6\t | 7\t | 8\n');

Mixpix 30.05.2017 14:57

Добрый день.

Спасибо за ответы!

Вот то что я сделал:
var string = ["Имя", "Улица", "Город", "Возраст"];
var int = [5, 8, 6, 4];
var res = [];

function widthOfCol(row, colWidth) {
  for (var i = 0; i < row.length; i++) {
    if (row[i].length < colWidth[i]) {
      var deff = colWidth[i] - row[i].length;
      var space = "";
      for (j = 0; j < deff; j++){
        space = space + " ";
      }
      res.push(row[i] + space);
    }
    else {
      res.push(row[i]);
    }
  }
  return res;
}
var res = widthOfCol(string, int);
console.log(res);


Эта функция только для добавления пробелов к коротким строкам, длину заранее прописал для примера.

Mixpix 30.05.2017 15:11

Цитата:

Сообщение от Rise (Сообщение 453350)
Mixpix, есть такой символ \t табуляция:
console.log('qqq\t | www\t | eee\t | rrr\n1\t | 2\t | 3\t | 4\n5\t | 6\t | 7\t | 8\n');

а если данные будут из файла получены?

ksa 30.05.2017 16:17

Цитата:

Сообщение от Mixpix
а если данные будут из файла получены?

Заменяй " |" на "\t |"...

Rise 30.05.2017 17:41

Цитата:

Сообщение от Mixpix (Сообщение 453843)
а если данные будут из файла получены?

Какая разница откуда данные, нет такого типа данных "из файла получены", есть 6 типов данных, в том числе строки, у строк есть специальные символы, в том числе \t.

Mixpix 31.05.2017 09:28

Цитата:

Сообщение от Rise (Сообщение 453854)
Какая разница откуда данные, нет такого типа данных "из файла получены", есть 6 типов данных, в том числе строки, у строк есть специальные символы, в том числе \t.

хорошо) попробую сделать еще и как предложили Вы. Спасибо!


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