为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

回首忆惘然 2022-01-01 20:10:30
这个矩阵函数返回输入列的确切步骤是什么'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].
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

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


'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'))


查看完整回答
反对 回复 2022-01-01
?
MMMHUHU

TA贡献1834条经验 获得超8个赞


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]


查看完整回答
反对 回复 2022-01-01
  • 2 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信