在JavaScript中从平面数组生成树结构(不使用对象引用)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在JavaScript中从平面数组生成树结构(不使用对象引用),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1557字,纯文字阅读大概需要3分钟。
内容图文
![在JavaScript中从平面数组生成树结构(不使用对象引用)](/upload/InfoBanner/zyjiaocheng/654/05f62ca3c4ad4fc4b3d4a136a458fe92.jpg)
我正在尝试通过平面数组在JavaScript中生成树结构.这通常是一个非常简单的命题-只需保留一个“堆栈”数组,并引用按嵌套深度排序的当前工作范围的祖先对象-在进入另一个嵌套级别时将一个新元素推入堆栈,并在离开时将其弹出一种,将当前工作元素替换为(新)最后一个数组项引用的对象.
不幸的是,这需要传递引用的能力,而JavaScript没有(我知道如何使用此有意义的方式来解决这个问题).
为了提供一些背景知识,我试图将包含嵌套XML样式(但不是XML,因此不能使用XML解析器)标记的任意长/复杂的字符串转换为类似于以下内容的结构:
预期输入:
[
"<token>",
"<my non compliant token>",
"some text at this level",
"<some other token>",
"some more text",
"<yet another token>",
"more text",
"</yet another token>",
"blah!",
"</some other token>",
"</token>",
"more text"
]
预期产量
[
{
"token": "<token>",
"children": [
{
"token": "<my non compliant token>",
"children": [
"some text at this level",
{
"token": "<some other token>",
"children": [
"some more text",
{
"token": "<yet another token>",
"children": [ "more text" ]
},
"blah!"
]
}
]
}
]
},
"more text"
]
需要澄清的是-我并不需要一个完整的算法(但是如果您想提供实现,我会很感兴趣)-只是一种用于维持输出树中当前位置的好方法(或者一种完全不同/更好的生成树的方法)对象!)不要太了解令牌的工作原理-它们不是XML,并且出于练习目的,可以采用完全不同的格式.
任何投入将不胜感激!
解决方法:
您的字符串看起来很容易解析.我想我会做这样的事情:
var stack = [];
var array = [];
for (var i in strings) {
var s = strings[i];
if (s.indexOf("</") == 0) {
array = stack.pop();
} else if (s.indexOf("<") == 0) {
var obj = {token: s, children: []};
array.push(obj);
stack.push(array);
array = obj.children;
} else {
array.push(s);
}
}
内容总结
以上是互联网集市为您收集整理的在JavaScript中从平面数组生成树结构(不使用对象引用)全部内容,希望文章能够帮你解决在JavaScript中从平面数组生成树结构(不使用对象引用)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。