我刚接触JavaScript。目前我正在阅读Marijn Haverbeke的《JavaScript高级程序设计》并尝试编写一个能够从列表生成数组的函数。使用循环是一种相当简单的方法:
function listToArray(list) {
let array = [];
for (let node = list; node; node = node.rest) {
array.push(node.value);
}
return array;
}
然而,我想以递归的方式来编写这个程序。我尝试把它放在这里:
列表:
{
value: 1,
rest: {
value: 2,
rest: {
value: 3,
rest: null
}
}
}
功能:
function recursiveNth(list) {
let array = [];
if (list.rest == null) {
array.push(list.value);
return array;
} else {
array.push(list.value);
return recursiveNth(list.rest);
}
}
输出:
[3]
array
作为参数传递给recursiveNth
。否则,每次调用都会丢失状态。 - fahrradflucht