Есть массив с объектами, порядок может быть разный, нужно построить дерево. Родитель дочерних элементов дерева указанны в "key" который соответствует индексу "1" .
Например {"1":4,"3":0,"4":0,"key":2},{"1":5,"3":0,"4":0,"key":2} это дети {"1":2,"3":0,"4":0,"key":1}
Всё дерево всегда начинается с "key":0 - это главный элемент, вложенность может быть любая, порядок в массиве тоже.
Неделю пытаюсь сделать не получается.
pkp = [{"1":1,"3":128,"4":1,"key":0},{"1":2,"3":0,"4":0,"key":1},{"1":3,"3":0,"4":0,"key":1},{"1":4,"3":0,"4":0,"key":2},{"1":5,"3":0,"4":0,"key":2},{"1":6,"3":0,"4":0,"key":3},{"1":6,"3":0,"4":0,"key":3},{"1":7,"3":0,"4":0,"key":1}];
console.log(JSON.stringify(pkp));
var peremennaya = "0";
for (i = 0; i < pkp.length; i++) {
if ("0" == pkp[i]["key"]) {
peremennaya = pkp[i][1];
addselect(peremennaya);
console.log(pkp[i][1]);
}
}
for (i = 0; i < pkp.length; i++) {
if (peremennaya == pkp[i]["key"]) {
var pr = pkp[i][1];
console.log("главный "+pr);
pr1 = "_"+pr;
addselect(pr1);
recpribor(pr);
}
}
function recpribor(pr, n) {
for (h = 0; h < pkp.length; h++) {
if (pr == pkp[h]["key"]) {
var result;
var pr = pkp[h][1];
console.log("второй "+pr);
addselect(pr);
recpribor(pr);
}
}
}