Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Найти побочную диагональ двумерного массива js (https://javascript.ru/forum/misc/75110-najjti-pobochnuyu-diagonal-dvumernogo-massiva-js.html)

Роман1479 03.09.2018 14:31

Найти побочную диагональ двумерного массива js
 
var matrix4D = [
  1, 1, 1, 1,
  1, 1, 1, 1,
  1, 1, 1, 1,
  1, 1, 1, 1
];
function_matrix(matrix4D);
/* alert(matrix4D); */

function function_matrix(arr){
    var n = arr.length;
    var step = Math.sqrt(arr.length) - 1;

    for (var i = step; i < n - step; i += step) { 
        console.log(arr[i]);
        alert(arr[i]);
    }
}


Я ее нашел, но как сделать с такой матрицей как ниже ( выводит undefined ), помогите пожалуйста.
( должен вывести 3 6 2 и 9 )
var matrix4D = [
  1, 1, 1, 3,
  1, 1, 6, 1,
  1, 2, 1, 10,
  9, 1, 1, 1,
  1, 1, 11, 1
];

или
( должен вывести 5 3 и 1 )
var matrix4D = [
  1, 2, 3, 4, 5,
  1, 1, 1, 3, 4, 
  1, 1, 1, 1, 1,
];

рони 03.09.2018 14:54

Цитата:

Сообщение от Роман1479
двумерного

где?

рони 03.09.2018 15:12

Роман1479,
var matrix4D = [
  1, 1, 1, 1,
  1, 1, 1, 1,
  1, 1, 1, 1,
  1, 1, 1, 1
];
var matrix4_D = [
  1, 1, 1, 3,
  1, 1, 6, 1,
  1, 2, 1, 10,
  9, 1, 1, 1,
  1, 1, 11, 1
];


var matrix5D = [
  1, 2, 3, 4, 5,
  1, 1, 1, 3, 4,
  1, 1, 1, 1, 1
];

function function_matrix(arr, num){
    var l = Math.min(num, arr.length/num)
    var n = --num;
    var res = [];

    for (var i = 0; i < l; i++) {
        res.push(arr[n])
        n += num
    }
    return res
}
alert(function_matrix(matrix4D, 4));
alert(function_matrix(matrix4_D, 4));
alert(function_matrix(matrix5D, 5));

Роман1479 03.09.2018 15:12

Извините пожалуйста, значит все не правильно, можнте помочь написать тоже самое только с двумерным

рони 03.09.2018 15:38

Роман1479,
var matrix4D = [
  [1, 1, 1, 1],
  [1, 1, 1, 1],
  [1, 1, 1, 1],
  [1, 1, 1, 1]
];
var matrix4_D = [
  [1, 1, 1, 3],
  [1, 1, 6, 1],
  [1, 2, 1, 10],
  [9, 1, 1, 1],
  [1, 1, 11, 1]
];


var matrix5D = [
  [1, 2, 3, 4, 5],
  [1, 1, 1, 3, 4],
  [1, 1, 1, 1, 1]
];

function function_matrix(arr){
    var num = arr[0].length;
    var l = Math.min(num, arr.length)
    var n = --num;
    var res = [];

    for (var i = 0; i < l; i++) {
        res.push(arr[i][n])
        --n
    }
    return res
}
alert(function_matrix(matrix4D));
alert(function_matrix(matrix4_D));
alert(function_matrix(matrix5D));

ksa 03.09.2018 16:16

Такой еще вариант предложу...

var matrix4D = [
  [1, 1, 1, 1],
  [1, 1, 1, 1],
  [1, 1, 1, 1],
  [1, 1, 1, 1]
];
var matrix4_D = [
  [1, 1, 1, 3],
  [1, 1, 6, 1],
  [1, 2, 1, 10],
  [9, 1, 1, 1],
  [1, 1, 11, 1]
];
var matrix5D = [
  [1, 2, 3, 4, 5],
  [1, 1, 1, 3, 4],
  [1, 1, 1, 1, 1]
];
alert(function_matrix(matrix4D));
alert(function_matrix(matrix4_D));
alert(function_matrix(matrix5D));
function function_matrix(arr){
    var col = arr[0].length;
	var row = 0;
    var res = [];
	while ((col > -1) && (row < arr.length)) {
        res.push(arr[row++][--col]);
    }
    return res
};


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