Показать сообщение отдельно
  #24 (permalink)  
Старый 04.11.2017, 19:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Сортировка массива по строкам или столбцам и вывод результата в таблицу
Tungusv,
<!DOCTYPE HTML>

<html>

<head>
  <title></title>
  <meta charset="utf-8">
<style type="text/css">
td{
   height: 22px; width: 80px; text-align: center;
}
table{
  margin: 20px auto;
}

</style>
</head>

<body >

<script>
function createTable(row, col, parent, masColor) {
    var table = document.createElement("table"),
        arr = [];
    for (var i = 0; i < row; i++) {
        var tr = table.insertRow(i);
        arr[i] = [];
        for (var j = 0; j < col; j++) {
            var td = tr.insertCell(j);
            var color = masColor ? masColor[i][j] : ("000000" + (Math.random() * 16777215 | 0).toString(16)).slice(-6);
            td.style.backgroundColor = "#" + color;
            td.textContent = "#" + color;
            arr[i].push(color)
        }
    }
    parent.appendChild(table);
    return arr
}
var body = document.body;
/* создание массива*/
var mas = createTable(3, 8, body);
console.log(mas);

/* сортировка массива по строкам возрастание*/
var new_mas_row = mas.map(function(ar) {
    return ar.slice(0).sort(function(a, b) {
        return parseInt(a, 16) - parseInt(b, 16)
    })
});
console.log(new_mas_row);
createTable(3, 8, body, new_mas_row);

/* сортировка массива по столбцам возрастание*/
var new_mas_col = mas[0].map(function(ar, k) {
    ar = [ar];
    for (var i = 1; i < mas.length; i++) ar.push(mas[i][k]);
    return ar.sort(function(a, b) {
        return parseInt(a, 16) - parseInt(b, 16)
    })
}).reduce(function(a, b) {
    return a.map(function(el, i) {
        return [].concat(el, b[i])
    })
});
console.log(new_mas_col);
createTable(3, 8, body, new_mas_col);

</script>
</body>

</html>
Ответить с цитированием