【发布时间】:2019-10-30 03:23:19
【问题描述】:
我正在尝试编写一个函数,该函数接受一个数组并返回一个新数组,其中所有元素都向左移动了 n 个索引。例如:
rotLeft([1,2,3,4],2)
// should return [3,4,1,2]
我编写了一个递归函数,它删除索引 0 处的值并使用 .shift() 和 .push() 将其分配给最后一个索引。
const rotLeft = (array, n) => {
console.log(array, n); // <-- this prints out expected array
if (!n) return array; // <-- but this returns undefined! :(
array.push(array.shift());
rotLeft(array, n - 1);
};
console.log(rotLeft([1, 2, 3, 4, 5, 6, 7], 9));
为什么每个 console.log(array) 都打印出预期的数组,但函数返回时数组未定义?
【问题讨论】:
-
需要返回递归结果:
return rotLeft(array, n - 1); -
因为你没有返回递归得到的值
标签: javascript arrays ecmascript-6