Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.01.2015, 23:20
Интересующийся
Отправить личное сообщение для lawer85 Посмотреть профиль Найти все сообщения от lawer85
 
Регистрация: 09.01.2015
Сообщений: 12

Slice JS для многомерных массивов
Можно ли использовать функцию slice для многомерного массива?
Ответить с цитированием
  #2 (permalink)  
Старый 18.01.2015, 23:57
Интересующийся
Отправить личное сообщение для y0uix Посмотреть профиль Найти все сообщения от y0uix
 
Регистрация: 22.10.2013
Сообщений: 11

Не вижу никаких препятствий для:
[[1, 2], [3, 4], [5, 6]].slice(1, 2); // [[3, 4]]
Ответить с цитированием
  #3 (permalink)  
Старый 19.01.2015, 00:26
Интересующийся
Отправить личное сообщение для lawer85 Посмотреть профиль Найти все сообщения от lawer85
 
Регистрация: 09.01.2015
Сообщений: 12

При одномерном массиве все ок создается копия массива отдельная. А вот при 2-мерном массиве почему-то у меня не создается отдельная копия массива, а ссылка на массив.
Ответить с цитированием
  #4 (permalink)  
Старый 19.01.2015, 00:28
Интересующийся
Отправить личное сообщение для lawer85 Посмотреть профиль Найти все сообщения от lawer85
 
Регистрация: 09.01.2015
Сообщений: 12

Т.е. когда я редактирую исходный массив, то изменения происходят и в массиве, созданном через slice
Ответить с цитированием
  #5 (permalink)  
Старый 19.01.2015, 00:50
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от lawer85
Можно ли использовать функцию slice для многомерного массива?
можно, но "работать" не будет

function copy(jsonLikeObject) {
    return JSON.parse(JSON.stringify(jsonLikeObject));
}

var arr1 = [1,2];
var arr2 = copy(arr1);
arr2.push(3);

alert(arr1.join());
alert(arr2.join());
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #6 (permalink)  
Старый 19.01.2015, 01:06
Интересующийся
Отправить личное сообщение для Noobloid Посмотреть профиль Найти все сообщения от Noobloid
 
Регистрация: 16.01.2015
Сообщений: 23

<script>
  var arr = [[1, 2], [3, 4], [5, 6], [5, 6], [5, 6], [5, 6]];
  var test = arr.slice(1, 3);
  test.push(["новое значение", "новое значение"]);
  console.log(test);
  console.log(arr);
</script>

работает

Последний раз редактировалось Noobloid, 19.01.2015 в 01:09.
Ответить с цитированием
  #7 (permalink)  
Старый 19.01.2015, 01:45
Интересующийся
Отправить личное сообщение для lawer85 Посмотреть профиль Найти все сообщения от lawer85
 
Регистрация: 09.01.2015
Сообщений: 12

<script>
		arr = [[0, 1, 3]];
		arr2 = arr.slice();
		arr[0][1] = 5;
		alert(arr2);
		alert(arr);
</script>


А так нет!
Ответить с цитированием
  #8 (permalink)  
Старый 19.01.2015, 02:35
Интересующийся
Отправить личное сообщение для Noobloid Посмотреть профиль Найти все сообщения от Noobloid
 
Регистрация: 16.01.2015
Сообщений: 23

arr = [[0, 1, 3]];
        arr2 = arr;
        arr[0][1] = 5;
        alert(arr2);
        alert(arr);

дык и так нет, сие чудо Scope называется, хотя может Scope тут и не причём. Нормального пояснения почему не работает если целиком копировать так и не нащёл. Нужно запомнить метод который nerv_ написал.
var arr2 = Array.apply(this, arr); тоже не пашет век живи век учись)

Последний раз редактировалось Noobloid, 19.01.2015 в 03:58.
Ответить с цитированием
  #9 (permalink)  
Старый 19.01.2015, 02:58
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Noobloid, тыц
Ответить с цитированием
  #10 (permalink)  
Старый 19.01.2015, 10:54
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Noobloid,
Метод конторый посоветовал nerv_ подходит только для JSON валидных массивов, так что пользуйтесь осторожно.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не запускается JS событие для формы dikucher Events/DOM/Window 6 26.11.2013 02:29
Linux для JS программиста xfreewindx Оффтопик 13 02.11.2013 23:28
JS для VK - разовая работа sidorka Работа 1 16.03.2013 02:00
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36
Js для переключения картинок Konstantin2009 Ваши сайты и скрипты 1 10.02.2009 00:41