I am following a linked list problem in Eloquent JavaScript book and I don’t understand how the value for the first link is 10 and not 20 if i is = 1, in the first iteration of the for loop.
function arrayToList(array) { let list = null; for (let i = array.length - 1; i >= 0; i--) { list = { value: array[i], rest: list }; //why is the value 10 and not 20 if i = 1, } return list; } console.log(arrayToList([10, 20]));
{value: 10, rest: {value: 20, rest: null}}
I think I am thinking of the for loop the wrong way, but I don’t know where.
Advertisement
Answer
The value is 20. The explanation is that the loop is running backwards, adding list
as a value of the property rest
. Thus, the outermost object has the first value in the array and the innermost object has the last value in the array.
Have a look at this demo, where the console shows the values for each iteration:
function arrayToList(array) { let list = null; for (let i = array.length - 1; i >= 0; i--) { console.log(`The index is ${i} and the value is ${array[i]}`) list = { value: array[i], rest: list }; //why is the value 10 and not 20 if i = 1, } return list; } arrayToList([10, 20]);