Создать таблицу с другим размером массива

Вот выдержка из ссылки на язык

Объекты никогда не уничтожаются явно; однако, когда они становятся недостижимыми, они могут быть собраны в мусор. Реализация позволяет отложить сборку мусора или вообще опустить ее - это вопрос качества реализации, как реализуется сбор мусора, до тех пор, пока не будут собраны никакие объекты, которые еще доступны.

Подробности реализации CPython: CPython в настоящее время использует схему подсчета ссылок с (опционально) задержкой обнаружения циклически связанного мусора, который собирает большинство объектов, как только они становятся недоступными, но не гарантируется сбор мусора, содержащего циркуляр Рекомендации. Информацию об управлении сбором циклического мусора см. В документации модуля gc. Другие реализации действуют по-разному, и CPython может измениться.

blockquote>

EDIT: об отсрочке сбора мусора .... gc позволяет вам взаимодействовать с сборщиком мусора и отключать его, если вы хотите изменить частоту сбора и т. д. Но я не использовал его сам. Кроме того, циклы, содержащие любые объекты с __del__ методами , не собираются .

0
задан myown email 18 January 2019 в 06:38
поделиться

2 ответа

var Col1 = [1];
var Col2 = [1, 2];
var Col3 = [1, 2, 3];
var Col4 = [1, 2, 3, 4];
var Col5 = [1, 2, 3, 4, 5];
var columns = [Col1, Col2, Col3, Col4, Col5];

addColumnsToTable(columns);
addColumnsToTable(columns);

function addColumnsToTable(columns) {
  var rowsCount = Math.max.apply(null, columns.map(x => x.length));

  var res = '';
  for (var i = 0; i < rowsCount; i++) {
    var row = '<tr>';
    for (var column of columns)
      row += `<td>${column[i] || ''}</td>`;
    row += '</tr>';
    res += row;
  }

  document.getElementById('content').innerHTML += res;
    
  var head = document.getElementById('head');
  if(!head.innerHTML.trim())
    head.innerHTML = columns.map((x, i) => `<th>Col${i + 1}</th>`).join('');  
}
table,
th,
td {
  border: 1px solid black;
  border-collapse: collapse;
}
#head > th{
  color: red;
}
<table>
  <thead>
    <tr id='head'>
    </tr>
  </thead>
  <tbody id='content'>
  </tbody>
</table>

0
ответ дан Slava Utesinov 18 January 2019 в 06:38
поделиться

Да, вы можете сделать это - сделать вложенный forEach над массивом, затем создать и добавить строки:

var table = document.getElementById("table");

Col1 = [1];
Col2 = [1, 2];
Col3 = [1, 2, 3];
Col4 = [1, 2, 3, 4];
Col5 = [1, 2, 3, 4, 5];

[Col1, Col2, Col3, Col4, Col5].forEach((a, i) => {
  var row = document.createElement("tr");
  [Col1, Col2, Col3, Col4, Col5].forEach((arr) => {
    var cell = document.createElement("td");
    if (arr.length) {
      cell.innerText = arr[0];
      arr.shift();
    }
    row.appendChild(cell);
  });
  table.appendChild(row);
});
<table id="table" border="1">
  <tr>
    <th>Col 1</th>
    <th>Col 2</th>
    <th>Col 3</th>
    <th>Col 4</th>
    <th>Col 5</th>
  </tr>
</table>
[ 119]

И если вы хотите создать всю таблицу в JavaScript:

var table = document.createElement("table");
table.setAttribute("border", "1");
table.innerHTML = "<tr><th>Col 1</th><th>Col 2</th><th>Col 3</th><th>Col 4</th><th>Col 5</th></tr>";

Col1 = [1];
Col2 = [1, 2];
Col3 = [1, 2, 3];
Col4 = [1, 2, 3, 4];
Col5 = [1, 2, 3, 4, 5];

[Col1, Col2, Col3, Col4, Col5].forEach((a, i) => {
  var row = document.createElement("tr");
  [Col1, Col2, Col3, Col4, Col5].forEach((arr) => {
    var cell = document.createElement("td");
    if (arr.length) {
      cell.innerText = arr[arr.length - 1];
      arr.pop();
    }
    row.appendChild(cell);
  });
  table.appendChild(row);
});

document.body.appendChild(table);

0
ответ дан Jack Bashford 18 January 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: