Javascript.RU

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

Преобразовать многомерный объект в двумерный
Здравствуйте, прошу помощи в написании функции. Нужно преобразовать любой симметричный(с однотипными подобъектами) объект в 2-мерный.

Исходные данные:
Объект1 (ПОДАЕТСЯ В КАЧЕСТВЕ АРГУМЕНТА НА ВХОДЕ):
{
    'somePage1': {
        0: {
            'function2': 'getPrice',
            item: '0568000085',
            line: 6
        },
        1: {
            'function2': 'getCurrency',
            item: '066000089',
            line: 9
        }
    },
    'somePage2': {
        0: {
            'function2': 'getPrice',
            item: '0568000085',
            line: 6
        },
        1: {
            'function2': 'getCurrency',
            item: '066000089',
            line: 9
        }
    },
    'somePage3': {
        0: {
            'function2': 'getPrice',
            item: '0568000085',
            line: 6
        },
        1: {
            'function2': 'getCurrency',
            item: '066000089',
            line: 9
        }
    },
    'somePage4': {
        0: {
            'function2': 'getPrice',
            item: '0568000085',
            line: 6
        },
        1: {
            'function2': 'getCurrency',
            item: '066000089',
            line: 9
        }
    }



На выходе он должен выглядеть так:

{
   row1:{
             key1:somePage1, 
             key2:0, 
             function:'getPrice', 
             item:'0568000085', 
             line:6
  },
  row2:{
             key1:somePage1,
             key2:1,
             function:'getCurrency',
             item:'066000089',
             line:9
  },
  row3:{
             key1:somePage2,
             key2:0,
             function:'getPrice',
             item:'0568000085',
             line:6 
  },
  row4:{
             key1:somePage2,
             key2:1,
             function:'getCurrency',
             item:'066000089',
             line:9
  },

 и т.д.
}


Нужно что-то вроде http://jsfiddle.net/mNW2Z/ , только количество строк(rowN) должно равняться сумме всех предпоследних объектов (на фиддле получается только 3 строки).
Также обязательно нужно использовать рекурсию, так как заранее не известно какая глубина вложенности будет у объекта.

Jquery solution - is ok))

Просьба модераторам перенести эту тему в раздел "Общие вопросы".

Можно закрывать тему, сделал сам. Код:

function createTable(){
	this.inlineData = {};
	this.row = 1;
	this.key = 1;

	this.inline = function(d, k){
	var that = this;
	var trigger = 0;
	var data = d||this.data;//данные в this.data присваиваются в любом месте кода, находящимся ниже.
	var keys = k||{};
		$.each(data, function(attr, value){
			if(!that.inlineData[that.row]){
				that.inlineData[that.row] = {};
			}
			if(typeof(value) === 'object'){
				keys[that.key] = attr;
				$.each(keys, function(number, val){
					that.inlineData[that.row]['key'+number] = val;
				});
				that.key++;
				that.inline(value, keys);
			}else{
				trigger = 1;
				that.inlineData[that.row][attr] = value;
			}
		});
		that.key--;
		if(trigger === 1){	
			that.row++;
		}
	}

Последний раз редактировалось Helvdan, 11.12.2013 в 11:03. Причина: нашел решение сам
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу функцию для canvas, которая будет перемещать мой объект на позицию х,у eko24 Events/DOM/Window 0 12.10.2013 00:33
Создать объект в объекте Bryant-24 Общие вопросы Javascript 3 10.07.2013 16:06
Как преобразовать строку в объект axmed2004 Общие вопросы Javascript 4 20.11.2012 16:02
jQuery (Как открыть объект в этом же окне, щёлкнув по нему мышкой) Объект кусок карты hadzhimuratov (X)HTML/CSS 32 18.06.2012 17:54
Передать ссылку на объект а не объект возникновения события Blazze Events/DOM/Window 0 11.10.2011 00:45