Приветствую, стоит задача передать в ext js Tree json с дочерними элементами из БД. Есть такой код, который задачу выполняет, но я не пойму как он работает, прошу знающих людей объяснить что происходит
в массив O один раз присваивается объект, затем работа идет с объектом temp, как происходит так, что в массиве O под конец выполнения функции находится вся структура?
var _makeTree = function(options) {
var children, e, id, o, pid, temp, _i, _len, _ref;
id = options.id || "id";
pid = options.parentid || "parentid";
children = options.children || "children";
temp = {};
o = [];
_ref = options.q;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
//console.log(_i);
e = _ref[_i];
//console.log(e);
e[children] = [];
temp[e[id]] = e;
if (temp[e[pid]] != null) {
temp[e[pid]][children].push(e);
} else {
//console.log('o.push(e);');
o.push(e);
}
}
return o;
};
var test =_makeTree({ q:
[
{"id": 123, "parentid": 0, "name": "Mammals"},
{"id": 456, "parentid": 123, "name": "Dogs"},
{"id": 214, "parentid": 456, "name": "Labradors"},
{"id": 810, "parentid": 456, "name": "Pugs"},
{"id": 919, "parentid": 456, "name": "Terriers"}
]
});
console.log(test);
/*
[{"id":123,"parentid":0,"name":"Mammals","children": [{"id":456,"parentid":123,"name":"Dogs","children":[{"id":214,"parentid":456,"name":"Labradors","children":[]},{"id":810,"parentid":456,"name":"Pugs","children":[]},{"id":919,"parentid":456,"name":"Terriers","children":[]}]}]}]
*/