程序只输出部分链表而不是整个链表

Program outputs only partial linked list instead of the entire linked list

我正在将数组转换为链表,并将链表转换为数组。我的问题是我得到的链接列表的控制台日志不正确,但是从该链接列表创建的数组的控制台日志是正确的。

在下面的代码中,我从 listToArray() 获得了 [1, 2, 3, 4, 5] 的预期输出。但是 w/arrayToList(),我的输出是 {值:1,其余:{值:2,其余:{值:3,其余:[对象]}}}。值 4 和 5 发生了什么变化?它们应该在那里,因为在这种情况下,listToArray() 使用从 arrayToList() 创建的相同列表。

var array = [1, 2, 3, 4, 5];

var arrayToList = function(arr) {
  var list = {};
  var head = list;

  for (i = 0; i < arr.length; i += 1) {
    list.value = arr[i];
    list.rest = {};

    if (i == arr.length - 1) {
      list = null;
    } else {
      list = list.rest;
    }
  }

  return head;
}

var listToArray = function(list) {
  var arr = [];
  var index = 0;

  while(list.rest != null) {
    arr[index] = list.value;
    list = list.rest;
    index += 1;
  }

  return arr;
}

console.log(listToArray(arrayToList(array)));
console.log(arrayToList(array));

您 运行 在浏览器中还是 Node.js?不同的环境有不同的控制台行为。在 Node 中,当您执行 console.log(someObject) 时,它将调用 util.inspect 将您的对象转换为字符串。 util.inspect 的默认递归深度为 2,之后它只会显示 [Object].

你可以试试

console.log(util.inspect({depth: null}));