javascript - 从二维数组中检索对 Angular 线值

标签 javascript arrays matrix

我正在尝试创建一个从二维数组中检索对 Angular 线值的函数:

input = [
    [1, 2, 3, 4],
    [5, 1, 2, 3],
    [9, 5, 1, 2]
]

output = [[9], [5, 5], [1, 1, 1], [2, 2, 2], [3, 3], [4]]

我无法弄清楚如何操作嵌套循环中的索引...这就是我当前正在处理的内容:

const diagonalValues = arr => {
    let output = new Array(2*input.length);
    for (let i = 0; i < output.length; i++) {
        output[i] = [];
        if (i < input.length) {
            for (j = input.length-1; j>i-input.length; --j) {
                console.log(i, j)
            }
        }
    }
}

我怎样才能做到这一点?

最佳答案

您可以使用获取行数(即数组数)和列数(即每个内部数组中的元素数)(假设所有数组具有相同的元素数),并据此计算对 Angular 矩阵。

const input = [
  [1, 2, 3, 4],
  [5, 1, 2, 3],
  [9, 5, 1, 2]
]

const rows = input.length;
const columns = input[0].length;
const total = columns + rows - 1;
const result = [];

for (let i = rows - 1; i >= 0; i--) {
  const row = input[i];

  for (let j = 0; j < columns; j++) {
    const el = input[i][j];
    const pos = j + rows - i - 1;

    if (!result[pos]) {
      result[pos] = []
    }

    result[pos].unshift(el)
  }
}

console.log(JSON.stringify(result))

您可以使用 reduceRightforEach 方法执行相同的操作。

let input = [
  [1, 2, 3, 4, 4],
  [5, 1, 2, 8, 3],
  [9, 5, 1, 2, 2],
  [9, 5, 1, 2, 1]
]
const result = input.reduceRight((r, a, i) => {
  a.forEach((e, j) => {
    const pos = j + (input.length - i - 1)
    if(!r[pos]) r[pos] = []
    r[pos].unshift(e)
  })

  return r;
}, []);

console.log(JSON.stringify(result))

关于javascript - 从二维数组中检索对 Angular 线值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57680203/

相关文章:

javascript - 带有 html 输入控件的动态生成的表行在回发时消失

c# 如何快速通过 ~300mb 日志文件进行 grep

c++ - 按列访问矩阵的指针

javascript - Node.js 奇怪的原型(prototype)继承

javascript - 更好的方法来处理这个 jquery/代码?

javascript - 对对象数组中的两个值求和,然后插入到另一个对象数组中

javascript - 如何在 Javascript 中迭代嵌套对象数组

c++ - 将矩阵传递给函数

c - 该程序仅解决第一行[数独]

javascript - 如何拥有无 Chrome YouTube 播放器并随时开始/停止播放?