Javascript 从二维数组中检索对角线值
我试图创建一个函数,从二维数组中检索对角线值:Javascript 从二维数组中检索对角线值,javascript,arrays,matrix,Javascript,Arrays,Matrix,我试图创建一个函数,从二维数组中检索对角线值: 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*i
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)
}
}
}
}
const对角线值=arr=>{
让输出=新数组(2*input.length);
for(设i=0;ii-input.length;--j){
控制台日志(i,j)
}
}
}
}
如何实现这一点?您可以使用get number of rows(行数)和number of column(列数)来计算对角线矩阵,行数就是数组数,列数就是每个内部数组中的元素数(假设所有数组的元素数相同)
const输入=[
[1, 2, 3, 4],
[5, 1, 2, 3],
[9, 5, 1, 2]
]
常量行=input.length;
常量列=输入[0]。长度;
const total=列+行-1;
常量结果=[];
对于(设i=rows-1;i>=0;i--){
常量行=输入[i];
for(设j=0;j
让输入=[
[1, 2, 3, 4],
[5, 1, 2, 8],
[9, 5, 1, 2],
[9, 5, 1, 2],
[9, 5, 1, 2],
];
放出=[];
for(设i=1-input.length;iforEach(o=>console.log(JSON.stringify(o))代码>您可以使用此算法从2d输入数组中检索对角线值
const输入=[
[1, 2, 3, 4],
[5, 1, 2, 3],
[9, 5, 1, 2]]
让输出=[]
input.forEach(res=>{
res.forEach(resp=>{
//如果数组的长度等于1
if(output.filter(x=>x==resp.length>0){
output.filter(x=>x==resp)[0].push(resp)
//如果数组的长度大于1
}else if(output.filter(x=>x[0]==resp.length>0){
output.filter(x=>x[0]==resp)[0]。push(resp)
}否则{
设温度=[]
温度推送(resp)
输出推送(温度)
}
})
})
output.forEach(o=>console.log(JSON.stringify(o))
这对其他输入不起作用(例如,我的答案中的输入)。@junvar我想是的,如果你想按不同的顺序,你可以使用reverse
。@junvar或者只是取消移位而不是推。你是对的,我曾一度认为对于比宽度高的数组它失败了,但我错了。另一个方向呢<代码>[1]、[2,5]、[3,1,9]、[4,2,5]、[3,1]、[2]