Что означают эти коды? JavaScript

function arrayToList(array) {
    let list = [];
    for(let element of array) {
        list = {value: element, rest: list};
    }
    return list;
}

console.info(arrayToList([1, 2, 3]));
// -> {value: 1, rest: { value: 2, rest: { value: 3, rest: [] } }}

Что в этом коде означает эта строка? Можешь описать? список = {значение: элемент, остальные: список};

function listToArray(list) {
    let array = [];
    for(let node = list; node; node = node.rest) {
        array.push(node.value);
    }
    return array;
}

console.info({value: 1, rest: { value: 3, rest: [] }});
// -> [1, 3];

Как в этом коде работает эта строка? for (let node = list; node; node = node.rest) {выражение}

О, [] на мгновение сбил меня с толку. Вы создаете связанный список и возвращаете последний объект в списке, хотя я не думаю, что результат в вашем комментарии точен. Цифры выглядят перевернутыми.

user9366559 14.03.2018 23:00

Я хочу указать, что на самом деле ваш вывод для первого примера неверен. Это {value: 3, rest: { value: 2, rest: { value: 1, rest: [] } }}, а не {value: 1, rest: { value: 2, rest: { value: 3, rest: [] } }}. И второй пример вывода, предполагающий, что вы хотели передать его в listToArray(), - это [1, 3, undefined], а не [1, 3].

Patrick Roberts 14.03.2018 23:05

@PatrickRoberts, извини. Вы правы, просто неверный вывод, спасибо :)

n3pixowe 14.03.2018 23:07

@doodlemeister, спасибо за ответ. Не могли бы вы помочь пошагово? Я запутался, потому что не могу понять.

n3pixowe 14.03.2018 23:09

возможный дубликат stackoverflow.com/questions/28800442/… и stackoverflow.com/questions/30224512/…

Bergi 14.03.2018 23:18

@Bergi, большое спасибо! Это хороший ответ на первый вопрос, большое спасибо :) Как я могу проголосовать за вас?

n3pixowe 14.03.2018 23:28

@ n3pixowe Просто проголосуйте там за ответы :-)

Bergi 14.03.2018 23:35

@Bergi, я не вижу здесь ничего для голосования за. Какую кнопку я должен нажать и где она находится?

n3pixowe 14.03.2018 23:43

@ n3pixowe Здесь ничего нет, вы можете просто проголосовать за мой комментарий. Там проголосуйте за ответ, щелкнув стрелку вверх.

Bergi 14.03.2018 23:46

@Bergi я не могу, мне нужно 15 популяций. Anway, большое спасибо. Я закрою этот вопрос, но не могу выбрать ваш ответ для решения.

n3pixowe 14.03.2018 23:50

@ n3pixowe О, верно. Делать ничего не надо, вопрос уже закрыт.

Bergi 15.03.2018 00:19

@Bergi Хорошо, еще раз большое спасибо :)

n3pixowe 15.03.2018 08:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
12
66
1

Ответы 1

Он рекурсивно вкладывает значения массива внутри объекта. Вторая функция распаковывает их обратно в массив.

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

Да. Вторая функция распаковывает их обратно в массив.

John Ellmore 14.03.2018 23:07

Ой, извини, не могу поверить, что пропустил это. ; _ ;. Не обращайте внимания на то, что я говорю ... Проголосуйте!

Arnav Borborah 14.03.2018 23:07

Джон Элмор, спасибо за ответ. Вы можете помочь шаг за шагом? Я сбит с толку.

n3pixowe 14.03.2018 23:08

"Напоминает"? Это является связанный список. И хотя в JS нет указателей, ссылок на объекты для этого явно достаточно.

Bergi 14.03.2018 23:19

Другие вопросы по теме