есть массив вида:
[
{
"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
}]