考虑一个矩阵 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/