JavaScript中的蜗牛步进问题


假设我们有这样的一组数组−

const arr = [
   [1, 2, 3, 4],
   [12,13,14,5],
   [11,16,15,6],
   [10,9, 8, 7]
];

该数组绑定为方块矩阵。

我们需要编写一个JavaScript函数,该函数采用此数组并构造一个新数组,通过获取元素并螺旋向内,直至收敛到中心。蜗牛步进在矩阵外部绕圈向内的螺旋。

因此,以上数组的输出应为−

const output = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];

因此,让我们编写此函数的代码。我们将使用递归解决此问题。

示例

有关代码将为−

const arr = [
   [1, 2, 3, 4],
   [12,13,14,5],
   [11,16,15,6],
   [10,9, 8, 7]
];
const spiralForm = arr => {
   return arr.length > 1 ?
   arr.splice(0,1)[0]
   .concat(spiralForm(arr[0].map((c, i) => {
      return arr.map(r => r[i]);
   })
   .reverse())) :
   arr[0]
}
console.log(spiralForm(arr));

输出

控制台中的输出将为 −

[
   1, 2, 3, 4, 5, 6,
   7, 8, 9, 10, 11, 12,
   13, 14, 15, 16
]

更新于: 2020年10月22日

251次查看

开启你的 职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.