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

时间:2017-05-18 06:49:26

标签: javascript arrays linked-list console.log

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

在下面的代码中,我从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));

1 个答案:

答案 0 :(得分:3)

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

你可以尝试

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