程序只输出部分链表而不是整个链表
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}));
我正在将数组转换为链表,并将链表转换为数组。我的问题是我得到的链接列表的控制台日志不正确,但是从该链接列表创建的数组的控制台日志是正确的。
在下面的代码中,我从 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}));