You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Node.js中将嵌套对象链表转换为数组

如何将嵌套对象形式的链表转换为数组(Node.js)

这有两种实用的实现方式,迭代和递归,都能完美满足你的需求:

迭代实现(推荐,避免栈溢出)

迭代是最稳妥的方案,尤其适合较长的链表,不会出现递归导致的栈溢出问题:

function linkedListToArray(head) {
  const result = [];
  let current = head;
  // 遍历直到当前节点为null
  while (current !== null) {
    // 把字符串类型的val转为数字,匹配你的期望输出
    result.push(Number(current.val));
    // 移动到下一个节点
    current = current.next;
  }
  return result;
}

// 测试你的输入示例
var ii = {"val":"1","next":{"val":"2","next":{"val":"3","next":{"val":"4","next":{"val":"5","next":null}}}}};
console.log(linkedListToArray(ii)); // 输出: [1,2,3,4,5]

思路解释

  • 初始化一个空数组result用来存储最终结果
  • 用current指针从链表的头部(也就是你传入的ii)开始遍历
  • 每次循环把当前节点的val转成数字后推入数组,然后将current指向next节点
  • 当current变成null时,说明已经遍历完所有节点,返回结果数组

递归实现(简洁但注意链表长度)

如果你的链表长度不会太长,递归写法会更简洁直观:

function linkedListToArrayRecursive(head) {
  // 递归终止条件:当前节点为null时返回空数组
  if (head === null) return [];
  // 拼接当前节点的值和下一个节点递归的结果
  return [Number(head.val), ...linkedListToArrayRecursive(head.next)];
}

// 测试
console.log(linkedListToArrayRecursive(ii)); // 输出: [1,2,3,4,5]

思路解释

  • 递归的核心是拆分问题:把当前节点的值和“剩余链表转换的数组”拼接起来
  • 当遇到null节点时,递归结束,返回空数组作为拼接的基础

小提示

如果你的链表节点val本身就是数字类型(不是字符串),只需要去掉Number()转换即可,直接使用current.val就好。

内容的提问来源于stack exchange,提问作者Chandan Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:28:59