Javascript - 关于数组混淆的函数

时间:2015-03-24 18:00:23

标签: javascript function

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练习中查看了这个函数几个小时,并且无法得到结果被颠倒的原因。任何帮助将不胜感激。

2 个答案:

答案 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;嵌套在。