首页 > 解决方案 > Eloquent JavaScript 练习 - 在列表中查找第 N 个位置

问题描述

下面是我对 Eloquent JavaScript 第 4 章练习的解决方案。目标是编写一个函数,该函数通过由链接对象组成的列表递归地工作,例如:

{值:1,休息:{值:2,休息:{值:3,休息:空}}}

等等...

在其他问题的帮助下,我编写了以下代码:

function findNth (list, n) {
    let node = list
    if (n  === 0) {
        return node.value
    } else if (node.rest) {
        node = node.rest
        findNth (node, n - 1)
    } else {
        return undefined
    }
}

N 作为 arg 输入,应该代表您要返回的列表的“索引”位置,使用 console.logs 我可以看到它通过 else if 语句成功倒数 N。但是,当 N 达到 0 时到达最后一次迭代时,它应该通过返回 node.value 返回相关值,但似乎返回未定义。

通过进一步的日志记录,我确认它不是通过最终的 If 语句返回未定义,而是在尝试返回 node.value 的值时。

谁能解释这是为什么?

提前致谢!

标签: javascript

解决方案


推荐阅读