const vortex = (n, m) => {
const nums = new Array(n).fill(0).map(() => new Array(m).fill(0))
//填充数据
let count = 1
let i = 0
let j = 0
let stepI = 0,
stepJ = 1
const _isBlock = () => {
return !nums[i + stepI] || nums[i + stepI][j + stepJ] !== 0
}
while (1) {
nums[i][j] = count++
if (_isBlock()) {
if (stepI === 0) {
stepI = stepJ
stepJ = 0
} else {
stepJ = -stepI
stepI = 0
}
if (_isBlock()) {
break
}
}
// 改变i和j
i += stepI
j += stepJ
}
return nums
}
调用
console.log(vortex(5, 6))