首页 > 解决方案 > 使用递归的一维数组迭代

问题描述

我正在尝试使用递归迭代一个简单的数组。对于这种特定情况,我正在尝试.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;
}

标签: javascriptarraysrecursion

解决方案


您需要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);


推荐阅读