Показать сообщение отдельно
  #2 (permalink)  
Старый 27.07.2014, 22:43
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Код писал сумрачный гений, который считает названия типа _i, _len, o само собой разумеющимися. Перевожу телепатически:
function _makeTree(options) {
    var id = options.id || "id";
    var parentid = options.parentid || "parentid";
    var children = options.children || "children";
    var itemsById = {};
    var result = [];
    var stack = options.q;
    for (var i = 0, l = stack.length; i < l; i++) {
        var item = stack[i];
        item[children] = [];
        itemsById[item[id]] = item;
        if (itemsById[item[parentid]] != null) {
            itemsById[item[parentid]][children].push(item);
        } else {
            result.push(item);
        }
    }
    return result;
}


Небольшую неясность вносит также то, что во входящей структуре q и в результате в качестве имен свойств 'id', 'parentid' и 'children' можно использовать произвольные строки, переданные в options. Это местами превращает код в череду вложенных квадратных скобок вместо нормальных обращений к свойствам.

Последний раз редактировалось ixth, 27.07.2014 в 22:55.
Ответить с цитированием