我正在解决编码问题并编写一个函数,该函数将以类似蜗牛的模式遍历嵌套数组(此处示例).
例如,给定输入[[1,2,3], [8,9,4], [7,6,5]],该函数应输出[1,2,3,4,5,6,7,8,9].
在我的main函数中,我创建了4个函数来遍历所有方向的数组.在每个步骤中,我将值推到当前网格位置并检查标志数组以确定是否已访问下一个位置.
我有两个问题:
array.slice(0),新的东西flagsArray似乎也是一个指针array,当我修改时flagsArray,这些变化就会反映出来array.这是为什么?我运行此测试时,我的克隆方法似乎有效:
var array = [0, 1];
var array_clone = array.slice(0);
array_clone[2] = 3;
console.log(array); // No changes to array
Run Code Online (Sandbox Code Playgroud)
flagsArray[(i + 1)] is undefined错误,而执行traverseDown().这看起来像是试图阅读超越的索引flagsArray.但是如果我flagsArray[i + 1][j] === false && i < flagsArray.length在一个while循环中检查,那么一旦它试图超出数组读取,循环是否应该停止?因为一个因为flagsArray[flags.Array.length]未定义,因此不等于false,另一个原因是我也检查i是否在flagsArray范围内.这是我的功能:
snail = function(array) {
console.log(array);
var output = …Run Code Online (Sandbox Code Playgroud)