javascript - 使用递归的一维数组迭代

标签 javascript arrays recursion

我正在尝试使用递归遍历一个简单的数组。对于这种特定情况,我正在尝试使用递归重新创建 .map()(不使用 .map()!)。我目前只推送最后一个元素原始数组,但我想将所有内容插入数组。

function recursiveMap (arr, func) {
    let newArr = [];
    if (arr.length === 1){
        newArr.push(func(arr));
    }
    else {
        newArr.push(...recursiveMap(arr.slice(1),func));
    }
    return newArr;
}

最佳答案

您需要在当前项上使用func,并将调用该函数的结果分散到数组的其余部分:

function recursiveMap(arr, func) {
  return arr.length ? [func(arr[0]), ...recursiveMap(arr.slice(1), func)] : [];
}

const arr = [1, 2, 3];

const result = recursiveMap(arr, n => n * 2);

console.log(result);

关于javascript - 使用递归的一维数组迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52763203/

相关文章:

javascript - 如何生成 0.01 - 8.50 之间数字范围的正则表达式

javascript - URL JS 对象什么时候出现在 Chrome 中?

java - 为什么没有 java.lang.Array 类?如果java数组是一个Object,它不应该扩展Object吗?

c - 为什么++ str和str + 1可以工作而str++不能工作?

python - 为什么这个递归函数在满足其基本情况后仍然继续

对C中的递归感到困惑

javascript - 仅使用 HTML + JavaScript 的动态电子表格

javascript - Javascript 与 Java 中的“&&”运算符

java - 从 char 转换为 long

arrays - Julia:在数组数组中广播结果