Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.02.2015, 20:56
Интересующийся
Отправить личное сообщение для dimy44 Посмотреть профиль Найти все сообщения от dimy44
 
Регистрация: 12.01.2015
Сообщений: 15

Глубокая копия
Есть ли в js стандартный метод получения глубокой копией массива? Чето гугл не помог, пока написал eval(JSON.stringify(array)), перегоняю туда-обратно...
Ответить с цитированием
  #2 (permalink)  
Старый 07.02.2015, 01:16
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

Если со вложенными, то только так:
JSON.parse(JSON.stringify(array))
Или вручную перебором. Иных вариантов нет.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 07.02.2015, 11:11
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

В ES6 есть, Object.assign.
http://6to5.org/
Ответить с цитированием
  #4 (permalink)  
Старый 07.02.2015, 11:20
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Erolast, +

Я почему то всегда думал, что данная функция копирует только верхний уровень. Заблуждался
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #5 (permalink)  
Старый 07.02.2015, 12:11
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

эээ вы чего, при чем тут Object.assign?
nerv_, у тебя же o1.foo === o2.foo → true
Ответить с цитированием
  #6 (permalink)  
Старый 07.02.2015, 12:23
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

А... Глубокое. Такого нет, да.
Ответить с цитированием
  #7 (permalink)  
Старый 07.02.2015, 12:24
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Octane
эээ вы чего, при чем тут Object.assign?
nerv_, у тебя же o1.foo === o2.foo → true
утро, туплю
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #8 (permalink)  
Старый 08.02.2015, 09:47
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Да, кстати, для неглубокого копирования массивов в ES6 есть вот такой вот сахарок:
let numbers = [1, 2, 3, 4, 5];
let copy = [...numbers];

http://6to5.org/docs/learn-es6/#default-rest-spread
Ответить с цитированием
  #9 (permalink)  
Старый 08.02.2015, 17:32
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

Erolast, классический .slice(0) в данном случае и проще и быстрее и удобнее.)
Троеточее слишком крутая штука, чтоб для таких мелочей её юзать.)
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 08.02.2015, 18:51
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Так очевидней ж.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Это будет копия или реф объекта? (код внутри) kostyanet Events/DOM/Window 9 14.11.2014 18:32
копия элемента neWjs Events/DOM/Window 18 01.07.2012 14:38
Уменьшенная копия l-liava-l Элементы интерфейса 13 04.04.2012 18:41
jquery копия кода не работает в подуровнях сайта valeragug jQuery 6 09.02.2011 11:16