javascript - 如何从矩阵中提取子矩阵?

标签 javascript html

考虑一个矩阵 A=[a_i,j] for i,j<=4 。我想提取一个子矩阵,即A3=[a_i,j]但是for i,j=3,4 (底部右侧 Angular 的二次矩阵 2x2)这是我的代码。最后,我得到“该对象不支持属性或方法推送”。你知道出了什么问题吗?

var n = 4;
var A = [];
var arr1 = [2, 1, 3, 4];
var arr2 = [6, 4, 1, 2];
var arr3 = [5, 3, 9, 7];
var arr4 = [1, 3, 2, 1];
A.push(arr1);
A.push(arr2);
A.push(arr3);
A.push(arr4);
document.getElementById("demo1").innerHTML = A;
document.getElementById("demo2").innerHTML = A[2][2];

function a(i, j) {
  return A[i - 1][j - 1];
}
document.getElementById("demo3").innerHTML = a(3, 3);

var A3 = [];
for (i = n - 1; i < n + 1; i++) {
  for (j = n - 1; j < n + 1; j++) {
    A3 = A3.push(a(i, j));
  }
}
document.getElementById("demo4").innerHTML = A3;
<p id="demo1"></p>
<p id="demo2"></p>
<p id="demo3"></p>
<p id="demo4"></p>
<p id="demo5"></p>

最佳答案

您可以过滤行并映射切片列。

var array = [[2, 1, 3, 4], [6, 4, 1, 2], [5, 3, 9, 7], [1, 3, 2, 1]],
    pos = { i: 2, j: 2 },
    size = { i: 2, j: 2 },
    result = array
        .filter((_, i) => i >= pos.i && i < pos.i + size.i)
        .map(a => a.slice(pos.j, pos.j + size.j))

console.log(result);

关于javascript - 如何从矩阵中提取子矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52313225/

相关文章:

javascript - Protractor 无法解析 conf.js

javascript - ExtJs,防止图像在 Ext.Img 中拉伸(stretch)

javascript - HTML5 Canvas ;图像剪辑和多个图像

php - 用户按下注销并销毁 session 后,如何禁用后退浏览器按钮?

python - 如何每五分钟下载一个网页?

javascript - 使用 :hover to modify the css of another class?

php - 单击“返回”时,客户的 CC 双倍收费

javascript - 如何添加错误处理以检查输入是否为单独函数中的数字

javascript结合数组和字典

javascript - 保持网站高度