这是我要提出的问题,以便我可以理解我遇到的错误-请原谅我缺乏知识和了解。
我试图编写一个递归函数来反转数组。我有一个可以反转字符串的函数,并且我正在尝试使用类似的技术来反转数组。我知道有很多方法可以解决此问题,但我很想知道为什么这行不通-显然这与在输入数组上调用的.shift()方法有关。
这是我的反转字符串的代码:
function revStr(str){
if (str.length === 0) return "";
return revStr(str.substring(1)) + str[0];
};
revStr("hello");
这是我要在数组上使用的代码:
function revStr(arr){
if (arr.length === 0) return "";
return revStr(arr.shift()) + arr[0];
};
revStr([1, 2, 3, 4]);
为什么我会收到“ arr.shift不是函数”?
非常感谢。
答案 0 :(得分:0)
此代码将按预期工作:
function revStr(arr){
if (arr.length === 0) return "";
var s = arr.shift();
return revStr(arr) + s;
};
revStr([1, 2, 3, 4]);