Как рекурсивно пройтись по ассоциативному многомерному массиву?
Всем привет.
Имеется многомерный ассоциативный массив: var Config = { "БПИ": { "30": { "12": [ "2,5" ], "24": [ "1,25" ], "48": [ "0,65" ] }, "60": { "12": [ "5,0" ], "24": [ "2,5" ], "36": [ "1,5" ], "48": [ "1,25" ] }, "125": { "12": [ "10" ], "24": [ "5" ], "48": [ "2,5" ] }, "250": { "12": [ "20,0" ], "24": [ "10,0" ], "48": [ "5,0" ] } } }; Как можно разбить данный массив на несколько индексных массивов, в которых будут содержаться элементы каждого подуровня. То есть для нашего примера будут массивы со следующими элементами: arr[0] = ["БПИ"]; arr[1] = ["30","60","125","250"]; arr[2] = ["12","24","48","12","24","36","48","12","24","48"]; arr[3] по аналогии. Вложенность может быть ещё больше(то есть появятся arr[4], arr[5] и т.д. вплоть до arr[10]. |
Цитата:
|
Цитата:
Внимательно перечитайте первый пост, и уловите мысль, которую пытался донести до нас автор, а не бросайтесь автоматическими фразами как собака павлова cbone, Пишите. for( in ) для перебора и перебираем рекурсивно. там не две строчки кода, поэтому мне лениво писать за вас. |
Чем дальше тем хуже.=\
Единственно правльный и логичный вариант в вашем случае уже был приведён в предыдущей теме, простые массивы, где заглавием является нулевой элемент. Ив вообще, скжите для чего вы хотите это использовать и мы предложим вам подходящие варианты. |
Цитата:
Ты записал туда все ключи "третьего уровня"... Покажи как будет выглядеть твой массив на таком примере var config = { "БПИ": { "30": { "12": [ "2,5" ], "24": [ "1,25" ], "48": [ "0,65" ] }, "60": { "12": [ "5,0" ], "24": [ "2,5" ], "36": [ "1,5" ], "48": [ "1,25" ] }, "125": { "12": [ "10" ], "24": [ "5" ], "48": [ "2,5" ] }, "250": { "12": [ "20,0" ], "24": [ "10,0" ], "48": [ "5,0" ] } }, "ВГИ": { "10": { "1": [ "2,5" ], "2": [ "1,25" ], "3": [ "0,65" ] }, "20": { "1": [ "5,0" ], "2": [ "2,5" ], "3": [ "1,5" ], "4": [ "1,25" ] }, "30": { "1": [ "10" ], "2": [ "5" ], "3": [ "2,5" ] }, "40": { "1": [ "20,0" ], "2": [ "10,0" ], "3": [ "5,0" ] } } }; |
Цитата:
|
Цитата:
Цитата:
По-моему из контекста вполне однозначно ясно, что подразумевается вложенность исходного многомерного массива, и что если его вложенность возрастет на уровень, два, или более, то появятся элементы arr[4], arr[5] и т.д. вплоть до arr[10]. Или для Вас этот контекст не столь очевиден? |
Цитата:
Цитата:
|
Цитата:
var config = { "БПИ": { "30": { "12": [ "2,5" ], "24": [ "1,25" ], "48": [ "0,65" ] }, "60": { "12": [ "5,0" ], "24": [ "2,5" ], "36": [ "1,5" ], "48": [ "1,25" ] }, "125": { "12": [ "10" ], "24": [ "5" ], "48": [ "2,5" ] }, "250": { "12": [ "20,0" ], "24": [ "10,0" ], "48": [ "5,0" ] } } }; var a=[],b,c; var i,j,k; for(i in config) { a[a.length]=new Array(i); b=[]; c=[]; for( j in config[i]) { b[b.length]=j; for( k in config[i][j]) { c[c.length]=k; }; }; a[a.length]=b; a[a.length]=c; }; for (var i=0; i<a.length; i++) { alert('a['+i+'] = '+a[i]); } |
Вариант ...
var O = { "БПИ": { "30": { "12": [ "2,5" ], "24": [ "1,25" ], "48": [ "0,65" ] }, "60": { "12": [ "5,0" ], "24": [ "2,5" ], "36": [ "1,5" ], "48": [ "1,25" ] }, "125": { "12": [ "10" ], "24": [ "5" ], "48": [ "2,5" ] }, "250": { "12": [ "20,0" ], "24": [ "10,0" ], "48": [ "5,0" ] } } }; function look(h) { var b = []; return function (f, a) { var c, a = a || 0, d; !b[a] && (b[a] = []); for (d in f) if (b[a].push(d) && (c = f[d])&& typeof c=='object') { var g = {}, e; for (e in c) g[e] = c[e]; arguments.callee(g, a + 1) } return b }(h) }; var s=look(O).join('\n'); alert(s); |
Часовой пояс GMT +3, время: 17:33. |