gpt4 book ai didi

javascript - 返回列表中的第 n 个元素 - Eloquent javascript 4.3

转载 作者:行者123 更新时间:2023-11-30 12:11:35 26 4
gpt4 key购买 nike

在 eloquent javascript 书中,练习 4.3 是关于构建列表的。问题是

"编写函数 nth,它接受一个列表和一个数字,并返回列表中给定位置的元素,如果没有这样的元素,则返回 undefined。

如果你还没有,也写一个 nth 的递归版本。”

这是他们的解决方案

function arrayToList(array) {
var list = null;
for (var i = array.length - 1; i >= 0; i--)
list = {value: array[i], rest: list};
return list;
}

function nth(list, n) {
if (!list)
return undefined;
else if (n == 0)
return list.value;
else
return nth(list.rest, n - 1);
}

console.log(nth(arrayToList([10, 20, 30]), 1));
// → 20

我不明白 if (!list) 如何检查第 n 个值是否存在。在我看来,它正在检查列表本身是否为假。

有什么关于我遗漏的指示吗?

谢谢

最佳答案

if(!list) {... 检查在这里是完全必要的,它正在检查 num 是否在列表中。如果您查看函数 return nth(list.rest, num -1); 的递归部分,list.rest 部分会向下钻取子列表,如果你走得足够远,你将到达列表的尾端,rest 属性将引用 null。因此,如果您输入的数字比列表中的项目长,您将遇到 !list 条件并返回 undefined。

我将向您展示最初进入挑战的列表,以便您可以看到 rest:null 在哪里

{ value: 10, rest: { value: 20, rest: { value: 30, rest: null } } }

关于javascript - 返回列表中的第 n 个元素 - Eloquent javascript 4.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33622059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com