Иногда мы хотим клонировать карту или установить ее в JavaScript.
В этой статье мы рассмотрим, как клонировать карту или набор в JavaScript.
Неглубокое клонирование карты или набора в JavaScript
Чтобы поверхностно клонировать карту или набор, мы можем просто передать исходную карту или набор в конструктор Map
или Set
соответственно.
Например, мы можем написать:
const originalMap = new Map([ ['foo', 1], ['bar', 2] ]) const clonedMap = new Map(originalMap) const originalSet = new Set([1, 2, 3]) const clonedSet = new Set(originalSet)
Мы создаем originalMap
и originalSet
, которые мы хотим мелко клонировать.
Для этого мы просто передаем их в конструкторы Map
и Set
соответственно.
Глубокое клонирование карты или набора в JavaScript
Чтобы поверхностно клонировать карту или набор, мы можем просто передать исходную карту или набор, которые были преобразованы в строку в формате JSON и разобраны обратно в массивы, в конструктор Map
или Set
соответственно.
Например, мы можем написать:
const originalMap = new Map([ ['foo', 1], ['bar', 2] ]) const deepClonedMap = new Map(JSON.parse(JSON.stringify([...originalMap]))) const originalSet = new Set([1, 2, 3]) const deepClonedSet = new Set(JSON.parse(JSON.stringify([...originalSet])))
Распределить originalMap
и originalSet
по массивам. Затем мы вызываем JSON.stringify
для преобразования массивов в строки JSON.
А затем мы вызываем JSON.parse
для разбора строк JSON обратно в массивы.
Затем, наконец, мы передаем их обратно в конструкторы Map
или Set
для создания из них новых карт или наборов.
Заключение
Чтобы поверхностно клонировать карту или набор, мы можем просто передать исходную карту или набор в конструктор Map
или Set
соответственно.
Чтобы поверхностно клонировать карту или набор, мы можем просто передать исходную карту или набор, которые были преобразованы в строку в формате JSON и разобраны обратно в массивы, в конструктор Map
или Set
соответственно.
Дополнительные материалы на PlainEnglish.io.
Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .