所以我有以下函数将数组转换为列表并正常工作:
function arrayToList (arr) {
var list = null
arr.reverse()
for (var i = 0; i < arr.length; i++) {
list = {value: arr[i], rest: list}
}
return list
}
现在我正在尝试编写一个返回列表第n个值的函数
function nth (list, number) {
if (number !== 0) {
nth(list.rest, number - 1)
} else {
console.log(typeof list.value)
return list.value
}
}
如果我运行第n个(list,0)它工作正常,但是当我在函数console.log中将索引(数字)更改为其他东西(例如1,2等)时,显示list.value的类型是数字,但它返回的是未定义的 P.S:我使用node.js版本6.11.4来运行我的代码
答案 0 :(得分:4)
您还需要return
来自中间调用
return nth(list.rest, number - 1) //observe that return before nth
即
function nth (list, number) {
if (number !== 0) {
return nth(list.rest, number - 1);
} else {
console.log(typeof list.value)
return list.value;
}
}
<强>演示强>
function arrayToList(arr) {
var list = null
arr.reverse()
for (var i = 0; i < arr.length; i++) {
list = {
value: arr[i],
rest: list
}
}
return list
}
function nth (list, number) {
if (number !== 0) {
return nth(list.rest, number - 1);
} else {
//console.log(typeof list.value)
return list.value;
}
}
var arr = [1,2,3,4,5,6];
var list = arrayToList(arr);
console.log(nth(list,2));
&#13;
答案 1 :(得分:1)
在if条件中使用它 -
return nth(list.rest, number - 1)
或者只是在你的其他情况下使用它而不是返回值 -
console.log(list.value);
根据您的使用情况使用它。