Показать сообщение отдельно
  #1 (permalink)  
Старый 10.03.2016, 13:02
Новичок на форуме
Отправить личное сообщение для SergeySP Посмотреть профиль Найти все сообщения от SergeySP
 
Регистрация: 10.03.2016
Сообщений: 5

Разобрать jSON обьект
есть массив вида:
[
  {
    "Name": "Ivanov",
    "Department": "72000"
  },
  {
    "Name": "Petrov",
    "Department": "72000"
  },
  {
    "Name": "kuznetsov",
    "Department": "72100"
  },
  {
    "Name": "Putin",
    "Department": "72110"
  },
  {
    "Name": "Pushkin",
    "Department": "31000"
  },
  {
    "Name": "Ivanov2",
    "Department": "31300"
  },
  {
    "Name": "Sidorov",
    "Department": "72110"
  },
    {
    "Name": "Sidorov",
    "Department": "01000"
  },
    {
    "Name": "Sidorov",
    "Department": "01000"
  },
    {
    "Name": "Sidorov",
    "Department": "01100"
  },
  {
    "Name": "Kozlov",
    "Department": "72110"
  }
]





Для каждой группы сотрудников нужно создать родительскую запись. вида{"Name": "01000","Department": "01000",id=1,parrentid = null}, самими сотрудникам записать в поле parrentid связь по id созданной записи.
Далее, между созданными родительскими записями нужно тоже расставить связи по логике. если в значении заполнены первые два символа а остальные три нули "72000", то у него "parrentid = null", далее значение которые начинаются на 72 но в конце 2 нуля а 3 символ не ноль,например:72100 то он должен стать дочерним с parrentid равным родительскому "72000",72110 должен стать дочерним для 72100 и т.д.

Пока смог реализовать только первую часть, т.е. у меня создаются уникальные записи и сотрудники к ним привязываются. Требуется помощь в реализации второй части.
Код:
function getdata(datajson){
		datajson.sort(function(a,b){return +a.Department.substring(0,5) > +b.Department.substring(0,5) ? 1 : -1});

		var i,
			j = 0,
			parentId = null,
			otdel = null,
			patt = /[^[0-9]/,
			myobj = [],
			departID;

		for (i = 0; i < datajson.length; i++) {
			
			departID = datajson[i].Department;
							if (otdel !== departID ){

								otdel = departID;
									myobj.push({
										Name:departID,
										Department:datajson[i].Department,
										id:++j,
										parentId:null
									});
								parentId = j;
								datajson[i].id = ++j;
								datajson[i].parentId = parentId;
								myobj.push(datajson[i]);
								

							}else{
								datajson[i].id =j;
								datajson[i].parentId = parentId;
								myobj.push(datajson[i])


							}

							j++;

				}    
		  console.log(JSON.stringify(myobj));
		  return myobj;
		}

На выходе должно получиться примерно вот так:

[
    {
    "Name": "72000",
    "Department": "72000",
    "id":1,
    "parentid":null
  },
  {
    "Name": "Ivanov",
    "Department": "72000",
    "id":2,
    "parentid":1
  },
  {
    "Name": "Petrov",
    "Department": "72000",
    "id":3,
    "parentid":1
  },
    {
    "Name": "72100",
    "Department": "72100",
    "id":4,
    "parentid":1
  },
  {
    "Name": "kuznetsov",
    "Department": "72100",
    "id":5,
    "parentid":4
  },
  {
    "Name": "72110",
    "Department": "72110",
    "id":6,
    "parentid":4
  },
  {
    "Name": "Putin",
    "Department": "72110",
    "id":7,
    "parentid":6
  }]
Ответить с цитированием