完整代码
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
//需要遍历的数组arr
function myfunction(arr, y) {
let col = arr.length - 1
//数组的长度-1
arr.forEach((item, index) => {
if (index === y) {
//当前的行数等于最外层的数组行数
item.forEach((ite, ind) => {
if (ind >= y && ind < item.length - y) {
//横向顺序打印123和5
console.log(ite);
}
})
} else if (index < col - y && index > y) {
//打印矩阵最右边的一列
console.log(item[item.length - 1]);
} else if (index === col - y) {
//这是最下面的一行
item.forEach((ite, ind) => {
if (ind >= y && ind < item.length - y) {
//反转横向打印数组每一项
console.log(item[item.length - 1 - ind]);
}
})
}
})
if (col + 1 > 2 * (y + 1)) {
//矩阵最左边的一列
arr.forEach((item, index) => {
if (index !== 0 && index !== col - y) {
//反向打印矩阵最左边的一列
console.log(arr[col - y - index][0]);
}
})
}
if (y < (col + 1) / 2) {
//判断是否还有层数
y++
myfunction(arr, y)
}
}
myfunction(arr, 0)
主要难点是在递归思想的运用上