2 回答
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'))
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]
添加回答
举报