Вот выдержка из ссылки на язык
Объекты никогда не уничтожаются явно; однако, когда они становятся недостижимыми, они могут быть собраны в мусор. Реализация позволяет отложить сборку мусора или вообще опустить ее - это вопрос качества реализации, как реализуется сбор мусора, до тех пор, пока не будут собраны никакие объекты, которые еще доступны.
Подробности реализации CPython: CPython в настоящее время использует схему подсчета ссылок с (опционально) задержкой обнаружения циклически связанного мусора, который собирает большинство объектов, как только они становятся недоступными, но не гарантируется сбор мусора, содержащего циркуляр Рекомендации. Информацию об управлении сбором циклического мусора см. В документации модуля gc. Другие реализации действуют по-разному, и CPython может измениться.
blockquote>EDIT: об отсрочке сбора мусора ....
gc
позволяет вам взаимодействовать с сборщиком мусора и отключать его, если вы хотите изменить частоту сбора и т. д. Но я не использовал его сам. Кроме того, циклы, содержащие любые объекты с__del__
методами , не собираются .
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>
Да, вы можете сделать это - сделать вложенный 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>
И если вы хотите создать всю таблицу в 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);