我将数组转换为链接列表并将链接列表转换为数组。我的问题是我得到了我所做的链表的不正确的控制台日志,但是从该链表创建的数组的正确控制台日志。
在下面的代码中,我从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));
答案 0 :(得分:3)
您是在浏览器还是Node.js中运行?不同的环境有不同的控制台行为在节点执行console.log(someObject)
时,它将调用util.inspect
将您的对象转换为字符串。 util.inspect
的默认递归深度为2,之后只显示[Object]
。
你可以尝试
console.log(util.inspect({depth: null}));