Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Копирование массива в другой массив (https://javascript.ru/forum/misc/46516-kopirovanie-massiva-v-drugojj-massiv.html)

Petesso 13.04.2014 13:08

Копирование массива в другой массив
 
Есть массивы
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. Но ради копирования массивов обращаться к такой серьезной штуке что-то не хочется.

jsnb 13.04.2014 13:30

arr2.unshift(arr1);

Petesso 13.04.2014 13:35

Цитата:

Сообщение от jsnb (Сообщение 307473)
arr2.unshift(arr1);

Не прокатило. При изменении массива arr1 меняется и arr2. Нужна КОПИЯ. А не ссылка.

jsnb 13.04.2014 13:44

Цитата:

Сообщение от Petesso (Сообщение 307474)
КОПИЯ

arr2.unshift([].concat(arr1));

DjDiablo 13.04.2014 14:00

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

Petesso 13.04.2014 14:25

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

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"

Octane 13.04.2014 14:30

полностью новый объект, никак не привязанный к исходному, можно сделать с помощью
Arr1Copy = JSON.parse(JSON.stringify(Arr1))

Aetae 13.04.2014 14:38

Либо обойти рекурсивно.

Petesso 13.04.2014 14:38

Цитата:

Сообщение от Octane (Сообщение 307481)
с помощью
Arr1Copy = JSON.parse(JSON.stringify(Arr1))

Все замечательно. Изменение первого массива не влияет на второй. Копируется в любое место. Спасибо.

nerv_ 13.04.2014 14:45

Цитата:

Сообщение от 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);
}


Часовой пояс GMT +3, время: 20:42.