Вариант №1. Воспользуемся методом .slice(). Мы знаем что он принимает два аргумента - .slice(begin, end). Но если мы пропустим этот шаг и ничего не передадим, то возвратится полная копия массива.
Вариант №2. Теперь нам поможет .concat(). Вызываем его на пустом массиве и передаем в аргумент heros.
Воспользуемся возможностями ES6.
Вариант №3. Используем spread (оператор расширения).
Вариант №4. И напоследок применим метод .from(), который необходимо вызвать на объекте Array.
Объекты
В JS с копированием объектов все чуть сложнее чем хотелось бы, т.к. нет нативного метода.
Вариант №1. Мы можем сами написать необходимый код. Выглядеть он будет подобным образом:
Вариант №2.JSON.parse и JSON.stringify тоже поможет сделать копию объекта:
Вариант №3. В ES6 у Object появился метод .assign(). К сожалению он не делает глубокое копирование:
Вариант №4. Можно воспользоваться сторонними библиотеками.