2016-03-19 4 views
2

Я учусь JavaScript из книги под названием «Eloquent Javascript»Eloquent Javascript: Упражнение: Список

Я пытаюсь решить упражнения, описанные здесь: http://eloquentjavascript.net/04_data.html#h_nSTX34CM1M

мне удалось решить, что этот код работы:

function arrayToList(array) { 

    var list = null; 

    for (var i = array.length - 1; i >= 0; i--) 
    list = { 
     value: array[i], 
     rest: list 
    }; 
    return list; 
} 

console.log(arrayToList([1, 2, 3])); 

Результат: {значение: 1, остальные: {значение: 2, остальное: {значение: 3, остальные: нулевая}}}

до сих пор, так хорошо, и по т В книге это правильное решение. НО!

Когда я пытаюсь запустить то же самое, но вместо того, чтобы с большей длиной массива, скажем:

console.log(arrayToList([1, 2, 3, 4, 5])); 

Результат: {значение: 1, остальные: {значение: 2, остальное: {значение: 3, rest: [Object]}}}

Почему это? Является ли мой код неправильным?

+0

Выполняете ли вы это в nodejs? Или консоль браузера? – Bergi

+0

nodejs в Windows PowerShell –

+0

Да, выглядит так :-) Узел ограничен в расширении объектов, которые он печатает; в браузере/отладчике вы обычно можете их интерактивно расширять. – Bergi

ответ

4

Нет ничего плохого в более длинном массиве. console.log() - это нестандартная реализация, зависящая от браузера, а некоторые реализации устанавливают ограничение на количество уровней вложенности объектов, которые они будут отображать. Когда они попадают на этот уровень, они просто отображают [Object], а не возвращаются в него, чтобы показать более глубокое гнездование.

Если вы фактически установили точку останова и проверили переменную в отладчике, вы увидите, что вы можете развернуть вложенные уровни настолько глубоко, насколько это возможно, и увидеть все.

Или вы могли бы сделать это:

console.log(JSON.stringify(arrayToList([1, 2, 3, 4, 5]))); 

вручную преобразовать все это в строку перед использованием console.log() на нем.

+0

Вы просто избили меня до этого +1 –

+0

OP мог 'JSON.stringify' результат, чтобы получить увеличенное изображение. – Andy

+0

О! Это просто, да? Большое спасибо! –

Смежные вопросы