У меня есть приложение, в котором объект используется для отображения дерева файлов в системе пользователя. Она структурирована следующим образом:Сохранять ссылку на объект в рекурсивной функции
[{
text: 'C:/',
type: 'dir',
nodes: [
{
text: 'foo',
type: 'dir',
nodes: [] // And so on
},
{
text: 'bar',
type: 'file'
}
}]
В соответствии с конвенциями, я хотел бы каталоги, которые будут отображаться первым и файлы, которые будут отображаться второй. К сожалению, мои данные извлекаются в алфавитном порядке, независимо от типа элемента.
Чтобы исправить это я написал хорошую рекурсивную функцию
var sort = function (subtree)
{
subtree = _.sortBy(subtree, function (item)
{
if (item.nodes)
{
sort(item.nodes)
}
return item.type
});
}
var tree = someTreeData;
sort(tree);
Я использую lodash для сортировки каждого из nodes
массивов в алфавитном порядке по типу файла. К сожалению, поддерево не ссылается на древовидный объект, так как когда я регистрирую его вывод, он остается несортированным. Как я могу это исправить?
Работала отлично с небольшой модификацией '' .forEach (function (node) {sortTree (node.nodes)}); '' – Harangue