如何在JavaScript中遍历Linked List,提取所有val值到nums数组?
从嵌套对象链表中提取所有val值到数组
给定如下嵌套对象形式的链表结构:
let list = { val: 3, next: { val: 4, next: { val: 2, next: { val: 7, next: null, }, }, }, };
我们需要把所有节点的val值提取到名为nums的数组中,最终得到[3,4,2,7]。
方法一:循环遍历
这是最直观且高效的方式,通过指针遍历链表的每个节点,收集val值直到链表末尾:
const nums = []; let current = list; while (current) { nums.push(current.val); // 移动到下一个节点 current = current.next; } console.log(nums); // 输出 [3,4,2,7]
方法二:递归实现
如果偏爱更简洁的代码逻辑,可以用递归处理每个节点,直到遇到null终止:
function getNodeValues(node) { if (!node) return []; // 收集当前节点val,再递归处理下一个节点 return [node.val, ...getNodeValues(node.next)]; } const nums = getNodeValues(list); console.log(nums); // 输出 [3,4,2,7]
两种方法的区别:循环遍历不会产生额外的调用栈开销,适合处理超长链表;递归写法更简洁易懂,但链表过长时可能触发栈溢出。
内容的提问来源于stack exchange,提问作者Ala Eddine Menai
相关产品推荐
相关产品推荐

