我将数组转换为链表,并将链表转换为数组。我的问题是,我得到的链接列表的控制台日志不正确,但从该链接列表创建的数组的控制台日志正确。
在下面的代码中,我从 listToArray() 获得了 [1, 2, 3, 4, 5] 的预期输出。但是使用 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}));
关于javascript - 程序只输出部分链表而不是整个链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44040525/