169 похожих чатов

'Use strict'; function FileTreeNode(nodeId, name, type) { const children =

[];

this.nodeId = nodeId;
this.name = name;
this.type = type;
this.parentNode = null;

this.setParent = function(parentNode) {
this.parentNode = parentNode;
};
this.addChild = function(node){
if (this.type !== 'DIRECTORY') {
throw "Cannot add child node to a non-directory node";
}
children.push(node);
node.setParent(this);
};
this.getChildren = function() {
return children;
};
};

function FileTree() {
this.nodes = [];

this.getRootNodes = function() {
const result = [];
for (let i = 0; i < this.nodes.length; i++) {
if (!this.nodes[i].parentNode) {
result.push(this.nodes[i]);
}
}
return result;
};
this.findNodeById = function(nodeId) {
for (let i = 0; i < this.nodes.length; i++) {
if (this.nodes[i].nodeId === nodeId) {
return this.nodes[i]
}
}
return null;
};
this.createNode = function(nodeId, name, type, parentNode) {
const node = new FileTreeNode(nodeId, name, type);
if (parentNode) {
parentNode.addChild(node);
}
this.nodes.push(node);
}
};

export function createFileTree(input) {
const fileTree = new FileTree();

for (const inputNode of input) {
var parentNode = inputNode.parentId ? fileTree.findNodeById(inputNode.parentId) : null;
fileTree.createNode(inputNode.id, inputNode.name, inputNode.type, parentNode)
}

return fileTree;
}

2 ответов

13 просмотров

Ну тут у тебя и мешанина. Ну ты вроде прав у тебя родительским узлом назначается файл, хотя из первой половины кода явно видно что это не допускается, там должна быть директория. Вывод простой, надо либо для новой годы ещё поддиректорию добавить либо назначить ей родителем предыдущую директорию

Dema- Автор вопроса
Alex Valiev
Ну тут у тебя и мешанина. Ну ты вроде прав у тебя ...

Спасибо, за ответ. Я отсортировал входной файл через json.sort и по факту получилось нужное

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта