Иногда мы хотим клонировать карту или установить ее в 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 .