Нужен цикл для создания огромного массива
Есть исходный массив 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, время: 02:22. |