场景

实现01的奇数矩阵实现下图规律的环绕。

image.png

代码

  1. // 假设num都是奇数
  2. function printMap(num){
  3. // 圈数
  4. let circleNum=parseInt(num/2)
  5. let lineNum=num
  6. var arr=[]
  7. // 初始化多维数组
  8. for(let t=0;t<num;t++){
  9. arr[t]=[]
  10. }
  11. // 绘制圈数 循环
  12. for(var i=1;i<=circleNum;i++){
  13. drawCircle(num,i,arr)
  14. }
  15. // 中心点
  16. var cenStr=circleNum%2==0?1:0
  17. arr[circleNum][circleNum]=cenStr
  18. arr.forEach(row => {
  19. console.log(row.join(" "))
  20. });
  21. }
  22. // num(几行),circleIndex(第几圈),arr 需要操作的多维数组
  23. function drawCircle(num,circleIndex,arr){
  24. var str=circleIndex%2==0?0:1
  25. var optStr=str==0?1:0
  26. // 上边
  27. var upNum=num-circleIndex
  28. for(let i=circleIndex-1;i<=upNum;i++){
  29. arr[circleIndex-1][i]=str
  30. }
  31. // 右边
  32. for(let i=circleIndex;i<=upNum;i++){
  33. arr[i][num-circleIndex]=str
  34. }
  35. // 下边
  36. for(let i=circleIndex-1;i<=upNum;i++){
  37. arr[num-circleIndex][i]=str
  38. }
  39. // 左边
  40. for(let i=circleIndex;i<=upNum-1;i++){
  41. // 如果是第一个 是特别的另类字符
  42. if(i==circleIndex){
  43. arr[i][circleIndex-1]=optStr
  44. }else{
  45. // 否则 是其他的
  46. arr[i][circleIndex-1]=str
  47. }
  48. }
  49. }
  50. printMap(5)

codepen案例