我目前正在使用Eloquent Javascript第4章。练习要求
编写一个函数arrayToList,当给定[1,2,3]作为参数时,它构建一个类似于前一个的数据结构
使用下面的代码我可以获得必要的输出 - 但仅当数组中的元素数量为3或更少时。
function createNode (value, rest) {
return {
value: value,
rest: rest }
};
function arrayToList(arr) {
var index = arr.length;
firstNode = createNode(index,null);
listBuild = firstNode;
for (i =(index-1); i >0; i--) {
listBuild = createNode(i,listBuild)
}
问题 arrayToList([1,2,3])产生所需的结果“{value:1,rest:{value:2,rest:{value:3,rest:null}}}”
arrayToList([1,2,3,4])产生“{value:1, 休息:{值:2,休息:{值:3,休息: [对象] }}}“
为什么这个函数在这种情况下会生成[Object]的rest属性?
谢谢!
答案 0 :(得分:2)
您的功能似乎工作正常,所以我怀疑这是输出问题,而不是您的代码有任何问题。
如果您使用Node.js来测试代码,那么您只是遇到了console.log
的实施问题。在Node.js中,console.log
使用util.inspect
格式化对象,默认情况下util.inspect
仅显示深度为2的嵌套对象。您可以通过直接调用util.inspect
来更改此对象并使用depth
选项。您可以将其设置为更高的数字,也可以将其设置为null
以获得无限深度:
var util = require('util');
var result = arrayToList([1,2,3,4]);
console.log(util.inspect(result, { depth: null }));