javascript - 使用递归的一维数组迭代
问题描述
我正在尝试使用递归迭代一个简单的数组。对于这种特定情况,我正在尝试.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);
推荐阅读
- arduino - BMP180 错误读取
- javascript - res.json() 不存在
- java - 装箱(搜索四组寻找答案)
- haskell - 懒惰,单词是否读取(在交互中)所有输入,还是只读取需要的内容?
- swift - macOS - NSView 中的背景图像在辅助监视器上消失
- python - Python 维护旧值
- javascript - 使用 FetchAPI 时,隐式 OAuth 不会重定向或提供回调 url
- python - 升级到 django-1.11 后加载管理页面出错
- php - 使用样式表编辑脚本输出
- javascript - 通过 Twitter URL 共享内容不起作用