Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.12.2015, 11:44
Аватар для GrEb
Интересующийся
Отправить личное сообщение для GrEb Посмотреть профиль Найти все сообщения от GrEb
 
Регистрация: 12.02.2010
Сообщений: 14

Добавление в многомерный массив
Привет, коллеги!
Задача такая: есть таблица, нужно добавлять в нее строки - снизу или сверху. Поскольку push и unshift работали неправильно, упростил максимально, пароноидально выкинул все циклы, дабы не было сомнений. Почему вариант 1 работает неправильно, а вариант 2 - как ожидается, Что не так?
1.
<script>
var arr1 = [[22,1,2],[33,4,5],[44,7,8]];

    console.log(arr1[0]);
    console.log(arr1[1]);
    console.log(arr1[2]);
    console.log(arr1[3]);
    console.log(arr1[4]);
    console.log(arr1[5]);

var oneLASrow = [55,-1,-1];
    arr1[3] = oneLASrow;
    console.log(arr1[0]);
    console.log(arr1[1]);
    console.log(arr1[2]);
    console.log(arr1[3]);
    console.log(arr1[4]);
    console.log(arr1[5]);

    oneLASrow[0] = 66;
    arr1[4]= oneLASrow;
    console.log(arr1[0]);
    console.log(arr1[1]);
    console.log(arr1[2]);
    console.log(arr1[3]);
    console.log(arr1[4]);
    console.log(arr1[5]);

    oneLASrow[0] = 77;
    arr1[5] = oneLASrow;
    console.log(arr1[0]);
    console.log(arr1[1]);
    console.log(arr1[2]);
    console.log(arr1[3]);
    console.log(arr1[4]);
    console.log(arr1[5]);
</script>


2.
<script>
var arr1 = [[22,1,2],[33,4,5],[44,7,8]];

    console.log(arr1[0]);
    console.log(arr1[1]);
    console.log(arr1[2]);
    console.log(arr1[3]);
    console.log(arr1[4]);
    console.log(arr1[5]);

var oneLASrow = [55,-1,-1];
    arr1[3] = oneLASrow;
    console.log(arr1[0]);
    console.log(arr1[1]);
    console.log(arr1[2]);
    console.log(arr1[3]);
    console.log(arr1[4]);
    console.log(arr1[5]);

    oneLASrow = [66,-1,-1];
    arr1[4]= oneLASrow;
    console.log(arr1[0]);
    console.log(arr1[1]);
    console.log(arr1[2]);
    console.log(arr1[3]);
    console.log(arr1[4]);
    console.log(arr1[5]);

    oneLASrow = [77,-1,-1];
    arr1[5] = oneLASrow;
    console.log(arr1[0]);
    console.log(arr1[1]);
    console.log(arr1[2]);
    console.log(arr1[3]);
    console.log(arr1[4]);
    console.log(arr1[5]);
</script>


Спасибо!

Последний раз редактировалось GrEb, 19.12.2015 в 11:53.
Ответить с цитированием
  #2 (permalink)  
Старый 19.12.2015, 12:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

GrEb,
1 вариант строки 12, 21, 30 указывают на один и тотже обьект , в втором варианте обьекты разные.
https://learn.javascript.ru/object-reference
Ответить с цитированием
  #3 (permalink)  
Старый 19.12.2015, 12:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

GrEb, вариант ...
var arr1 = [[22,1,2],[33,4,5],[44,7,8]];
var oneLASrow = [55,-1,-1];
    arr1[3] = oneLASrow.slice();
    oneLASrow[0] = 66;
    arr1[4]= oneLASrow.slice();
    oneLASrow[0] = 77;
    arr1[5]= oneLASrow.slice();
   alert(JSON.stringify(arr1));
Ответить с цитированием
  #4 (permalink)  
Старый 19.12.2015, 12:38
Аватар для GrEb
Интересующийся
Отправить личное сообщение для GrEb Посмотреть профиль Найти все сообщения от GrEb
 
Регистрация: 12.02.2010
Сообщений: 14

Спасибо! То что нужно! Теперь все ясно стало - массив oneLASrow передается в массив arr1 по ссылке, а не значению!

Последний раз редактировалось GrEb, 19.12.2015 в 13:11.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как получить многомерный массив из этой строки imedia Элементы интерфейса 1 12.06.2015 15:30
Многомерный массив sparrow Общие вопросы Javascript 4 16.01.2014 14:58
ajax и многомерный массив cat9 AJAX и COMET 1 03.10.2010 15:25
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Многомерный массив в json Л_Денис Общие вопросы Javascript 1 21.04.2010 21:43