function arrayToList(array) {
var list = null
for (var i = 0; i < array.length; i++)
list = {value: array[i], rest: list};
return list;
}
console.log(arrayToList([10, 20, 30]));
// {value: 30, rest:{ value:20, rest:{value: 10, rest: null}}
我已经从雄辩的javascript练习中查看了这个函数几个小时,并且无法得到结果被颠倒的原因。任何帮助将不胜感激。
答案 0 :(得分:2)
以下是您在for-loop
中进行迭代时发生的事情:
第一次迭代:
i = 0
;
list = {value:10, rest:null}
第二次迭代:
i = 1
;
list = {value:20, rest:{value:10, rest: null}}
第三次迭代:
i = 2
;
list = {value:30, rest:{value:20, rest:{value:10, rest: null}}}
在每次迭代中,您将list
对象嵌套在其自身中:
list = {value: array[i], rest: list};
答案 1 :(得分:1)
在循环中设置输出,而不是看它是如何工作的:
function arrayToList(array) {
var list = null
for(var i = 0; i < array.length; i++) {
list = {value: array[i], rest: list};
console.log(list);
console.log('\n');
}
return list;
}
arrayToList([10, 20, 30]);
/ *输出
{值:10,休息:null}
{值:20,休息:{值:10,休息:无效}}
{值:30,休息:{值:20,休息:{值:10,休息:空}}}
* /
您已设置list = null。
第一次在循环中,列表为&#34; {值:10,休息:无效} &#34;
- &gt; &#34; null &#34;嵌套在。
中第二次循环,列表为&#34; {值:20,休息:{值:10,休息:空}} &#34;
- &gt; &#34; {值:10,休息:空} &#34;嵌套在。
中最后一次,列表为&#34; {值:30,休息:{值:20,休息:{值:10,休息:空}}} &#34;
- &gt; &#34; {值:20,休息:{值:10,休息:空}} &#34;嵌套在。
中