Задать вопрос
cbone
@cbone
Серверная инфраструктура

Многомерный ассоциативный массив на JS

Всем привет.
Имеется многомерный ассоциативный массив:

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].
  • Вопрос задан
  • 23062 просмотра
Подписаться 5 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 3
taliban
@taliban
php программист
habrahabr.ru/qa/13732/#answer_57959
Советую все таки присмотреться сюда. Отличное решение Вашей проблемы.
Ответ написан
Комментировать
sdevalex
@sdevalex
Рекурсия? Не?
function findKeys(object, result){
     result = result || [];

     var keys = [];

     $.each(object, function(index, value){
           keys.push(index);

           if($.isObject(value))
                findKeys(object, result);
     });

     result.push(keys);

     return result;
}

var data = findKeys(Config);
Ответ написан
sdevalex
@sdevalex
Версия без jQuery…
function findKeys(object, result){
     result = result || []; //Это как необязательный параметр... читайте так findKeys(object, result = [])

     var keys = [];

     for(var i in object){
           if(!object.hasOwnProperty(i))
                continue;

           keys.push(index);

           if($.isObject(value))
                findKeys(object, result);
     };

     result.push(keys);

     return result;
}

var data = findKeys(Config);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы