[];
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;
}
Ну тут у тебя и мешанина. Ну ты вроде прав у тебя родительским узлом назначается файл, хотя из первой половины кода явно видно что это не допускается, там должна быть директория. Вывод простой, надо либо для новой годы ещё поддиректорию добавить либо назначить ей родителем предыдущую директорию
Спасибо, за ответ. Я отсортировал входной файл через json.sort и по факту получилось нужное
Обсуждают сегодня