递归数组反转Javascript

Recursive Array Reversal Javascript

本文关键字:Javascript 数组 递归      更新时间:2023-09-26

因此,我们在编程类中使用此作业练习函数式javascript,但我无法使其正常工作。如有任何建议,我们将不胜感激。除了尸体以外,所有的东西都给了我使用。以下是我的想法:(它总是只向我发送第一个数组索引内容,而不是所有内容都颠倒过来。我试着将其更改为

 if(arr.length <= 1) return arr;

但这从未触及基本情况。)

function ReverseArray(arr) {
//base case
if(arr.length == 1)
{
   return arr[0];
}
if(arr.length == 0)
{
   return 0;
}
var head = arr.pop;
var newArr = [head, ReverseArray(arr)];
return newArr;
}
x = y <--assignment
z == y <-- comparison 

查看您的代码:

if(arr.length = 1) 

需要

if(arr.length == 1)

与零检查相同


而且你没有打电话给pop

var head = arr.pop;

你需要插入

var head = arr.pop();

这是使用三元运算符在单行中执行操作的最精确、最干净的方法。

function reverse(arr) {
  return arr.length < 2 ? arr : [arr.pop()].concat(reverse(arr));
}
console.log(reverse([4, 3, 3, 1]));

这里有一个可运行的带有工作函数的示例。仅供参考,还有一个内置函数可以为您完成此操作。

我认为,除了与赋值/比较运算符混淆之外,当您构建结果数组时,应该使用array.concat()来连接您的数组,而不是构建一个新数组,其中第二项是数组本身。

var a = [1,2,3,4,5];
console.log(ReverseArray(a));
function ReverseArray(arr) {
    if(arr.length < 2) {
        return arr;
    } else {
        return [arr.pop()].concat(ReverseArray(arr));
    }
}