【发布时间】:2019-03-18 17:16:27
【问题描述】:
我遇到了这个潜在的场景,我向我的一些员工提出了一个测试问题。我可以想出几种方法来解决这个问题,但它们都不是很漂亮。我想知道什么解决方案可能最适合这个以及任何优化技巧。问题来了:
给定一些任意长度的点符号字符串“mystr”(例如,mystr = “node1.node2.node3.node4”),编写一个名为“expand”的函数,将这些项目中的每一个创建为一个新的节点层在一个 js 对象中。对于上面的示例,假设我的对象名称是“blah”,它应该输出以下内容:
blah: { node1: { node2: { node3: { node4: {}}}}}
来自函数调用:
mystr = "node1.node2.node3.node4";
blah = {};
expand(blah,mystr);
或者,如果更简单,可以创建函数以将变量设置为返回值:
mystr = "node1.node2.node3.node4";
blah = expand(mystr);
额外的功劳:有一个可选的函数参数,它将设置最后一个节点的值。因此,如果我将我的函数称为“expand”并像这样调用它:expand(blah, mystr, "value"),则输出应该与以前相同,但使用 node4 = "value" 而不是 {}。
【问题讨论】:
-
您应该将您的解决方案发布到CodeReview 并在那里寻求改进。
-
这本质上是一个 DFS(深度优先搜索),它使用堆栈来跟踪您所在的级别。
-
@dave:这主要是假设的代码,与代码审查无关。
标签: javascript object