Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Поведение массивов при копировании. (https://javascript.ru/forum/misc/50416-povedenie-massivov-pri-kopirovanii.html)

ksa 25.09.2014 16:01

Цитата:

Сообщение от FoxTrix
сам найду решение

Его тебе уже показали...
http://javascript.ru/forum/misc/5041...tml#post332236

FoxTrix 25.09.2014 16:05

Цитата:

Сообщение от ksa (Сообщение 332240)
Его тебе уже показали...

Спасибо, пропустил тот пост, спутал с тем что был выше.

FoxTrix 25.09.2014 16:32

Сделал вроде по аналогии, всё равно не работает =\
var default_arr = [
	['текст', 'текст', ['текст','текст'], 'текст', 'текст'],
	['текст', 'текст', ['текст','текст','текст'], 'текст', 'текст'],
	['текст', 'текст', ['текст','текст'], 'текст', 'текст'],
	['текст', 'текст', ['текст','текст'], 'текст', 'текст'],
	['текст', 'текст', ['текст','текст'], 'текст', 'текст'],
	['текст', 'текст', ['текст','текст'], 'текст', 'текст'],
	['текст', 'текст', ['текст','текст'], 'текст', 'текст'],
	['текст', 'текст', ['текст'], 'текст', 'текст']
];
var arr = default_arr.concat();

for(var i = 0; i < arr.length; i++) {
	arr[i][2] = default_arr[i][2].concat();
}

я всё верно понял?

ksa 25.09.2014 16:51

Цитата:

Сообщение от FoxTrix
всё равно не работает

У тебя ТРИ массива - их все три и нужно "клонировать".

var default_arr = [
	['текст', 'текст', ['текст','текст'], 'текст', 'текст'],
	['текст', 'текст', ['текст','текст','текст'], 'текст', 'текст'],
	['текст', 'текст', ['текст','текст'], 'текст', 'текст'],
	['текст', 'текст', ['текст','текст'], 'текст', 'текст'],
	['текст', 'текст', ['текст','текст'], 'текст', 'текст'],
	['текст', 'текст', ['текст','текст'], 'текст', 'текст'],
	['текст', 'текст', ['текст','текст'], 'текст', 'текст'],
	['текст', 'текст', ['текст'], 'текст', 'текст']
];
var arr = default_arr.concat();
for(var i = 0; i < default_arr.length; i++) {
	arr[i] = default_arr[i].concat();
	arr[i][2] = default_arr[i][2].concat();
}
arr[1][2]='[new]';
alert(default_arr);
alert(arr);

ksa 25.09.2014 16:56

FoxTrix, вот еще статейка...
http://blog.eney-solutions.com.ua/co...avascript.html

Или вот...
http://webonrails.ru/post/1062/

FoxTrix 25.09.2014 16:58

Цитата:

Сообщение от ksa (Сообщение 332247)
У тебя ТРИ массива - их все три и нужно "клонировать".

Черт, и верно, про второй забыл =)
Спасибо, всё работает.

Аркадий Укупник 25.09.2014 19:36

В JS объекты за исключением примитивных(строк, чисел и булева типа) передаются по ссылке. Чтобы создать копию используй такую функцию function clone(o){return JSON.parse(JSON.stringify(o))}


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