Javascript 此矩阵函数返回输入列的确切步骤是什么';1 2 3 \n4 5 6“是什么;?

Javascript 此矩阵函数返回输入列的确切步骤是什么';1 2 3 \n4 5 6“是什么;?,javascript,arrays,matrix,Javascript,Arrays,Matrix,此矩阵函数返回输入列的确切步骤是什么 function Matrix(input) { const thisRows = input.split('\n').map(row => row.split(' ').map(Number)); return { rows: thisRows, columns: thisRows[0].map((col,i) => thisRows.map(row => row[i])) } } 我不明白this

此矩阵函数返回输入列的确切步骤是什么

function Matrix(input) {
  const thisRows =
    input.split('\n').map(row => row.split(' ').map(Number));

  return {
    rows: thisRows,
    columns: thisRows[0].map((col,i) => thisRows.map(row => row[i]))
  }
}
我不明白
thisRows[0].map((col,I)=>thisRows.map(row=>row[I])
如何正确返回列,更具体地说,为什么我们在后面使用
thisRows[0]

const thisRows =
    input.split('\n').map(row => row.split(' ').map(Number));
您有行:
[[1,2,3],[4,5,6]]

现在要获取列,您需要迭代第一行,并使用map函数中当前值的索引从另一个map中的每一行获取值:

i=0 [1,4],
i=1 [2,5],
i=2 [3,6]

此函数的输入将是一个字符串,如

'1 2 3\n4 5 6'
因此,函数在上拆分,\n返回

['1 2 3', '4 5 6']
[[1, 2, 3], [4, 5, 6]]
然后,函数在数组中的每个项上循环,并将每个
'
上的项拆分,然后将每个子项转换为一个数字,返回

['1 2 3', '4 5 6']
[[1, 2, 3], [4, 5, 6]]
然后,该函数获取第一行,以获取矩阵的宽度。未使用此行,但循环中的索引已被删除。然后,在循环内部,循环每一行,并在指定索引处获取元素,返回列,而不是行

比如说。在第一个循环中,索引为0。在第二个循环中,我们将在每一行上循环并获取0索引元素:

i=0
//第一次迭代
[1,2,3][i]=1
//第二次迭代
[4,5,6][i]=4
=> [1, 4]
然后,下一个索引将为1,因此发生相同的情况:

i=1
//第一次迭代
[1,2,3][i]=2
//第二次迭代
[4,5,6][i]=5
=> [2, 5]
等等。然后,两个循环完成后,所有列将以数组形式返回:

[[1, 4], [2, 5], [3, 6]]
下面是一个示例,通过一些console.log来说明我的意思:

函数矩阵(输入){
常数thisRows=
input.split('\n').map(row=>row.split('').map(Number));
返回{
行:这行,
列:thisRows[0]。映射((列,i)=>{
console.log('index:',i)
返回thisRows.map(行=>{
console.log('row:',JSON.stringify(row),'\nel:',row[i])
返回行[i]
})
})
}
}

log(矩阵('1 2 3\n4 5 6'))
要了解函数的输出,查看该函数的输入也很重要。矩阵的输入是什么使得它返回?它真的是它的返回值吗?我已经做了更正。为什么从一开始-3就打败了我。
thisRows[0]
。。。你说得对。。。也可以使用thisRows[1]。。。甚至
新数组(thisRows[0].length).fill(null).map
。。。。重要的是列数(即thisRows[n].length)。真正的线索是,
col
(指向.map的第一个参数)未使用。您可以迭代任何行:p