Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Slice JS для многомерных массивов
Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013
Помог: 1 раз(а)
Можно ли использовать функцию slice для многомерного массива? (Добавление)
При одномерном массиве все ок создается копия массива отдельная. А вот при 2-мерном массиве почему-то у меня не создается отдельная копия массива, а ссылка на массив.
Т.е. когда я редактирую исходный массив, то изменения происходят и в массиве, созданном через slice
lawer85
Отправлено: 20 Января, 2015 - 12:51:28
Частый гость
Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013
Помог: 1 раз(а)
Что вообще никаких идей нет? Неужели никто не знает как копировать многомерный массив?
LIME
Отправлено: 20 Января, 2015 - 13:02:17
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
Клонировать
хоть бы код показал что ли
SAD
Отправлено: 20 Января, 2015 - 17:33:52
Постоянный участник
Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009 Откуда: Днепропетровск, Украина
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
lawer85, проще всего пропустить через JSON.stringify и parse, но на больших объектах будет заметно медленнее чем рекурсивное копирование. Если нужно работать с большой вложенностью тогда можно открыть исходники любой либы где есть deep clone.
Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009 Откуда: Днепропетровск, Украина
Помог: 75 раз(а)
armancho7777777 пишет:
SAD пишет:
if (Object.prototype.toString.call(obj) === '[object Array]') {
CODE (javascript):
скопировать код в буфер обмена
console.log(typeof []); // object
console.log(typeof new Array()); // object
console.log(typeof {}); // object
console.log(typeof new Object()); // object
И что, позволь спросить, тебя смущает??
Процитированная строка дает то, что собственно и нужно.
Функция проверяет на массив или объект и, в зависимости от этого, выбирает способ итерирования.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.