Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.09.2012, 22:57
Новичок на форуме
Отправить личное сообщение для apish Посмотреть профиль Найти все сообщения от apish
 
Регистрация: 19.09.2012
Сообщений: 2

Нужен цикл для создания огромного массива
Есть исходный массив asd[[0],[1],[2],[3],[4]];
Каждый элемент, кроме нулевого представляет из себя массив только из нулевого элемента.



Необходимо чтобы при каждом переборе массива к каждому элементу, отличному от нуля, Добавлялись по 4 таких же массива, состоящему только из нулевого элемента.

На словах сложно , объясню на примерах :

Как исходник имеем массив
asd[
  [0],
  [1],
  [2],
  [3],
  [4]
];


После первого прохода цикла, получаем следующий массив:

asd[
  [0],
  [1, 
    [0],
    [1],
    [2],
    [3],
    [4]
    ],
  [2, 
    [0],
    [1],
    [2],
    [3],
    [4]
    ],
  [3, 
    [0],
    [1],
    [2],
    [3],
    [4]
    ],
  [4, 
    [0],
    [1],
    [2],
    [3],
    [4]
    ],
];


Следующий цикл преобразует этот массив в это:

asd[
  [0],
  [1, 
    [0,
      [0],
      [1],
      [2],
      [3],
      [4]
    ],
    [1,
      [0],
      [1],
      [2],
      [3],
      [4]
    ],
    [2,
      [0],
      [1],
      [2],
      [3],
      [4]
    ],
    [3,
      [0],
      [1],
      [2],
      [3],
      [4]
    ],
    [4,
      [0],
      [1],
      [2],
      [3],
      [4]
    ]
    ],
  [2, 
    [0,
      [0],
      [1],
      [2],
      [3],
      [4]
    ],
    [1,
      [0],
      [1],
      [2],
      [3],
      [4]
    ],
    [2,
      [0],
      [1],
      [2],
      [3],
      [4]
    ],
    [3,
      [0],
      [1],
      [2],
      [3],
      [4]
    ],
    [4,
      [0],
      [1],
      [2],
      [3],
      [4]
    ]
    ], и т.д.


При этом в процессе выполнения цикла, необходимо задавать элементам значения.

asd[1][2][2][1][2][3][4][1][2] = 4;
asd[1][2][2][1][2][3][4][1][3] = 0;

И т.д.

С принципами работы циклов я знаком, но не пойму как при создании этого здоровенного многоуровневого массива присваивать значения его элементам.

При выполнении определенного условия, выполнение цикла будет прекращено, но сколько раз цикл будет совершен - неизвестно.

Может, кто-то знает как решить сию задачу? Или, может, есть какие-то другие способы ее решения кроме циклов?
Ответить с цитированием
  #2 (permalink)  
Старый 20.09.2012, 02:37
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Дзен-трансгуманист
и погружать браузер на несколько минут в ступор, пока выполняется адовая процедура?
для этого и придумали WebWorkers
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 20.09.2012, 16:10
Новичок на форуме
Отправить личное сообщение для apish Посмотреть профиль Найти все сообщения от apish
 
Регистрация: 19.09.2012
Сообщений: 2

Благодарю за участие. Придумал другой ход: может кому пригодится, выкладываю

moves - исходный массив.

function perebor(item, i, moves) {
                      if(typeof(item) == 'object'){
                        item.forEach(perebor); //если рассматриваемый элемент - массив, заново кидаем его в функцию на ращипление
                      }else{
                        if(item!==0 && i!==0){ //если элемент не нулевой и это значение не равно нулю
                          moves.splice(i, 1, [item, ["value0", 88, 89]]); //Заменяем элемент массивом типа [элемент, [доп. массив]]
                        }
                        
                      }
                      
                    }
                    
                    moves.forEach(perebor);


alert(moves);

Всё, функция создает бездонный массив, как и требовалось. Кроме того, она параллельно строит все ветки массива, а не по очереди - это в моем случае тоже важно, но забыл сказать об этом
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу jQuery плагин для создания меню Zeboton jQuery 9 15.09.2014 15:31
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31
Нужен тулкит для сортировки списков cj_spotty Элементы интерфейса 7 31.07.2009 09:27
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53
Либа для создания окон Кирпич Библиотеки/Тулкиты/Фреймворки 8 25.06.2008 16:44