Нужен цикл для создания огромного массива
Есть исходный массив asd[[0],[1],[2],[3],[4]];
Каждый элемент, кроме нулевого представляет из себя массив только из нулевого элемента. :help: :help: :help: :help: :help: :( :( Необходимо чтобы при каждом переборе массива к каждому элементу, отличному от нуля, Добавлялись по 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; И т.д. С принципами работы циклов я знаком, но не пойму как при создании этого здоровенного многоуровневого массива присваивать значения его элементам. При выполнении определенного условия, выполнение цикла будет прекращено, но сколько раз цикл будет совершен - неизвестно. Может, кто-то знает как решить сию задачу? Или, может, есть какие-то другие способы ее решения кроме циклов? |
Цитата:
|
Благодарю за участие. Придумал другой ход: может кому пригодится, выкладываю
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); Всё, функция создает бездонный массив, как и требовалось. Кроме того, она параллельно строит все ветки массива, а не по очереди - это в моем случае тоже важно, но забыл сказать об этом |
Часовой пояс GMT +3, время: 09:49. |