Javascript 给定一个表示层次结构的数组,将数据输出到JS中的树形式中
给定一个具有表示层次结构的数组的数据文件。通过在Javascript中编写脚本来创建树数据结构。以树形形式输出数据:Javascript 给定一个表示层次结构的数组,将数据输出到JS中的树形式中,javascript,arrays,tree,parent,nodechildren,Javascript,Arrays,Tree,Parent,Nodechildren,给定一个具有表示层次结构的数组的数据文件。通过在Javascript中编写脚本来创建树数据结构。以树形形式输出数据: root transportation cars Mazda Honda Toyota train lightRail rapidTransit waterVehicle ferry boats 数据文件: ["transportation.cars.Mazda
root
transportation
cars
Mazda
Honda
Toyota
train
lightRail
rapidTransit
waterVehicle
ferry
boats
数据文件:
["transportation.cars.Mazda",
"transportation.cars.Honda",
"transportation.cars.Toyota",
"transportation.train.lightRail",
"transportation.train.rapidTransit",
"transportation.waterVehicle.ferry",
"transportation.waterVehicle.boats"
...]
树形输出:
root
transportation
cars
Mazda
Honda
Toyota
train
lightRail
rapidTransit
waterVehicle
ferry
boats
我的尝试:
var root = new Node('root');
var arr = ["transportation.cars.Mazda",
"transportation.cars.Honda",
"transportation.cars.Toyota",
"transportation.train.lightRail",
"transportation.train.rapidTransit",
"transportation.waterVehicle.ferry",
"transportation.waterVehicle.boats"
]
for(var i of arr){
var res=i.split(".");
root.addChild(new Node(res[0]));
res[0].addChild(new Node(res[1]));
res[1].addChild(new Node(res[2]));
}
this.addChild = function(node) {
node.setParentNode(this);
this.children[this.children.length] = node;
}
console.log(root);
我试图使用JavaScript创建一个树结构,但它没有Java中的相同功能(即,除非使用Typescript,否则它没有类方法)。您可以使用类似于trie树的东西。添加节点的方式必须更加具体。但是像这样的事情是可能的
功能节点(word)
{
这个值=单词;
this.children={};
}
函数AddDotChain(chain)
{
设arr=chain.split('.');
让currentNode=this;
函数递归(currentIndex)
{
if(currentIndex==阵列长度)
{
返回;
}
设currentWord=arr[currentIndex];
if(currentNode.childrent[currentWord])
{
currentNode=currentNode[currentWord];
返回递归(currentIndex+1);
}
让子节点=新节点(currentWord);
currentNode.childrent[currentWord]=子节点;
currentNode=子节点;
返回递归(currentIndex+1);
}
}
您可以这样做,使用树形数据结构,您只需在包含数据的字符串数组上循环并按点分割,然后将每个项添加到树实例中,该树实例将在您执行将数组和输出作为树形数据结构的函数时创建
此代码可以帮助您
var arr=[“运输.汽车.马自达”,
“交通、汽车、本田”,
“交通、汽车、丰田”,
“交通、火车、轻轨”,
“运输、火车、快速运输”,
“交通、水车、渡轮”,
“交通、水车、船只”
];
功能节点(数据){
这个数据=数据;
这是:children=[];
}
功能树(数据){
this.root=null;
}
Tree.prototype.contains=函数(数据){
返回此项。查找(数据)?真:假;
}
Tree.prototype.add=函数(数据,节点){
const newNode=新节点(数据);
如果(!this.root){
this.root=newNode;
返回;
}
const parent=node?this.find(node):null;
如果(家长){
如果(!this.contains(数据)){
parent.children.push(newNode);
}
}
}
Tree.prototype.find=函数(数据){
if(this.root){
const queue=[this.root];
while(queue.length){
const node=queue.shift();
if(node&&node.data==数据){
返回节点;
}
对于(var i=0;i 日志(createTreeOfTransportation(arr))代码>请更新您的问题并澄清您遇到的问题。您已经告诉我们您正在尝试做什么,但不清楚问题是什么。这里有很多问题,您认为新节点(字符串)
在Javascript中有什么作用?此外,您正在检查是否尚未在节点中添加。例如,transportation列出了7次,但您只需要1个节点,在这里您可以添加节点。在JS中,由于它没有新的节点方法,也许我应该将其替换为var root=”“。我可以添加一个函数来检查父节点是否存在。