Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.04.2014, 13:08
Интересующийся
Отправить личное сообщение для Petesso Посмотреть профиль Найти все сообщения от Petesso
 
Регистрация: 06.02.2014
Сообщений: 13

Копирование массива в другой массив
Есть массивы
arr1 = [0, 1, 2, ["a,b,c"], "aaaa", [["d,e,f"], 4, 5]; и
arr2 = ["blabla", "blabla", "blabla"];
Массив arr1 нужно скопировать в массив arr2[0]. Результат должен выглядеть так:
arr2 = [[0, 1, 2, [a,b,c], "aaaa", [[d,e,f], 4, 5], "blabla", "blabla"];

Как это можно реализовать? Погуглив, нашел пару функций, но они отказались адекватно копировать. Так же рекомендовали jquery. Но ради копирования массивов обращаться к такой серьезной штуке что-то не хочется.
Ответить с цитированием
  #2 (permalink)  
Старый 13.04.2014, 13:30
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

arr2.unshift(arr1);
Ответить с цитированием
  #3 (permalink)  
Старый 13.04.2014, 13:35
Интересующийся
Отправить личное сообщение для Petesso Посмотреть профиль Найти все сообщения от Petesso
 
Регистрация: 06.02.2014
Сообщений: 13

Сообщение от jsnb Посмотреть сообщение
arr2.unshift(arr1);
Не прокатило. При изменении массива arr1 меняется и arr2. Нужна КОПИЯ. А не ссылка.
Ответить с цитированием
  #4 (permalink)  
Старый 13.04.2014, 13:44
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от Petesso Посмотреть сообщение
КОПИЯ
arr2.unshift([].concat(arr1));
Ответить с цитированием
  #5 (permalink)  
Старый 13.04.2014, 14:00
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

var Arr1 = ["1", "2", "3"];
var Arr2 = [[1,2],[1,2]];
Arr2.unshift(Arr1.slice());
alert(Arr2[0]);
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Ответить с цитированием
  #6 (permalink)  
Старый 13.04.2014, 14:25
Интересующийся
Отправить личное сообщение для Petesso Посмотреть профиль Найти все сообщения от Petesso
 
Регистрация: 06.02.2014
Сообщений: 13

Не прокатило.

var Arr1 = ["1", "2", "3", ["1","2","3"]];
var Arr2 = [[1,2],[1,2]];
Arr2.unshift(Arr1.slice());
alert(Arr2[0]);
Arr1[3][1] = "BEDA";
alert(Arr2[0][3][1]); //"BEDA"
var Arr1 = ["1", "2", "3", ["1","2","3"]];
var Arr2 = [[1,2],[1,2]];
Arr2.unshift([].concat(Arr1));
alert(Arr2[0]);
Arr1[3][1] = "BEDA";
alert(Arr2[0][3][1]); //"BEDA"

Последний раз редактировалось Petesso, 13.04.2014 в 14:31.
Ответить с цитированием
  #7 (permalink)  
Старый 13.04.2014, 14:30
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

полностью новый объект, никак не привязанный к исходному, можно сделать с помощью
Arr1Copy = JSON.parse(JSON.stringify(Arr1))
Ответить с цитированием
  #8 (permalink)  
Старый 13.04.2014, 14:38
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

Либо обойти рекурсивно.
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 13.04.2014, 14:38
Интересующийся
Отправить личное сообщение для Petesso Посмотреть профиль Найти все сообщения от Petesso
 
Регистрация: 06.02.2014
Сообщений: 13

Сообщение от Octane Посмотреть сообщение
с помощью
Arr1Copy = JSON.parse(JSON.stringify(Arr1))
Все замечательно. Изменение первого массива не влияет на второй. Копируется в любое место. Спасибо.
Ответить с цитированием
  #10 (permalink)  
Старый 13.04.2014, 14:45
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Petesso
Не прокатило
Сообщение от Petesso
Не прокатило.
катальщик

Сообщение от Octane
полностью новый объект, никак не привязанный к исходному, можно сделать с помощью
Arr1Copy = JSON.parse(JSON.stringify(Arr1))
в том случае, если нет циклических ссылок
var arr = [1,2];
arr[2] = arr;
  
try {
    var x = JSON.stringify(arr);
}catch(e) {
    alert(e);
}
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать массив из даных массива. koeshiro Общие вопросы Javascript 12 16.07.2013 13:24
Не понятное поведение при копирование массива cyber Events/DOM/Window 32 19.12.2012 10:38
Копирование массива пользовательской функцией Serpanok Events/DOM/Window 2 30.09.2011 13:16
как найти и удалить массив из массива? FRIE Общие вопросы Javascript 8 14.03.2011 15:48
Копирование в буфер другой странички pitbullko Элементы интерфейса 29 23.10.2009 17:37