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

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


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].


回首忆惘然
浏览 194回答 2
2回答

MM们

此函数的输入将是一个字符串,例如'1 2 3\n4 5 6'因此,该函数在 \n 上拆分,返回['1 2 3', '4 5 6']然后,该函数循环遍历数组中的每个项目,并在每个项目上拆分项目' '并将每个子项目转换为一个数字,返回[[1, 2, 3], [4, 5, 6]]该函数然后抓取第一行以获取矩阵的宽度。该行未被使用,但循环内的索引被使用。然后,在循环内部,循环遍历每一行并获取指定索引处的元素,返回列而不是行。例如。在第一个循环中,索引为 0。在第二个循环中,我们将遍历每一行并获取索引为 0 的元素:i = 0// first iteration[1, 2, 3][i] = 1// second iteration[4, 5, 6][i] = 4=> [1, 4]然后,下一个索引将是 1,所以同样的事情发生:i = 1// first iteration[1, 2, 3][i] = 2// second iteration[4, 5, 6][i] = 5=> [2, 5]等等。然后,一旦两个循环都完成,所有列都将在数组中返回:[[1, 4], [2, 5], [3, 6]]这是一个例子,有一些 console.logs 来说明我的意思:function Matrix(input) {  const thisRows =    input.split('\n').map(row => row.split(' ').map(Number));  return {    rows: thisRows,    columns: thisRows[0].map((col,i) => {      console.log('index:', i)      return thisRows.map(row => {        console.log('row:', JSON.stringify(row), '\nel:', row[i])        return row[i]      })    })  }}console.log(Matrix('1 2 3\n4 5 6'))

MMMHUHU

后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]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript