13.04.2014, 13:08
|
Интересующийся
|
|
Регистрация: 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. Но ради копирования массивов обращаться к такой серьезной штуке что-то не хочется.
|
|
13.04.2014, 13:30
|
Профессор
|
|
Регистрация: 15.03.2014
Сообщений: 561
|
|
arr2.unshift(arr1);
|
|
13.04.2014, 13:35
|
Интересующийся
|
|
Регистрация: 06.02.2014
Сообщений: 13
|
|
Сообщение от jsnb
|
arr2.unshift(arr1);
|
Не прокатило. При изменении массива arr1 меняется и arr2. Нужна КОПИЯ. А не ссылка.
|
|
13.04.2014, 13:44
|
Профессор
|
|
Регистрация: 15.03.2014
Сообщений: 561
|
|
Сообщение от Petesso
|
КОПИЯ
|
arr2.unshift([].concat(arr1));
|
|
13.04.2014, 14:00
|
Профессор
|
|
Регистрация: 04.02.2011
Сообщений: 1,815
|
|
var Arr1 = ["1", "2", "3"];
var Arr2 = [[1,2],[1,2]];
Arr2.unshift(Arr1.slice());
alert(Arr2[0]);
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
|
|
13.04.2014, 14:25
|
Интересующийся
|
|
Регистрация: 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.
|
|
13.04.2014, 14:30
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
полностью новый объект, никак не привязанный к исходному, можно сделать с помощью
Arr1Copy = JSON.parse(JSON.stringify(Arr1))
|
|
13.04.2014, 14:38
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,588
|
|
Либо обойти рекурсивно.
__________________
29375, 35
|
|
13.04.2014, 14:38
|
Интересующийся
|
|
Регистрация: 06.02.2014
Сообщений: 13
|
|
Сообщение от Octane
|
с помощью
Arr1Copy = JSON.parse(JSON.stringify(Arr1))
|
Все замечательно. Изменение первого массива не влияет на второй. Копируется в любое место. Спасибо.
|
|
13.04.2014, 14:45
|
|
junior
|
|
Регистрация: 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);
}
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
|
|