【发布时间】:2013-01-21 08:33:56
【问题描述】:
我有一个这样的数组:
["one", "foo", "two", "baz", "two", "one", "three", "lulz", "wtf", "three"]
1 2 2 1 3 3
每个字符串都是访问对象字面量的键。在这种情况下,我想要做的是添加由主键分隔的子键的完整路径one、two 和three。这是预期的结果:
[
'one', 'one.foo', 'one.two', 'one.two.baz', 'one.two', 'one',
'three', 'three.lulz', 'three.wtf', 'three'
]
过去几个小时我一直在尝试使用循环并首先提取重复的项目,然后尝试通过给定的起点和终点对数组进行切片。然后我尝试了正则表达式,只是想看看它是否可能,但 JS 不处理正则表达式中的递归,它变得非常复杂并且可能没有必要。我当时很沮丧,没有任何效果。我不知道现在该去哪里。我被卡住了。
编辑:我已经尝试了一段时间,因为它看起来更简单,但理想情况下,我想要提取的只是没有关闭“标签”的键链。
[
'one', 'one.foo', 'one.two', 'one.two.baz',
'three', 'three.lulz', 'three.wtf'
]
有人能告诉我吗?
【问题讨论】:
-
你怎么知道什么时候重新开始?例如,您从
one.two.baz转到one.two的第二个'two'有什么特别之处? -
键是唯一的,第二个
two关闭第一个,所以two是at levelone`,因此one.two用于开始和结束标签。但理想情况下,我不需要重复的,我会编辑我的答案。 -
那么为什么不
one.foo.two?您是否应该扫描整个列表以查看是否还有另一个foo? -
我没听懂...什么定义了主键?
-
因为
foo是one的一个键。我确定这是因为foo没有重复。只有重复的键包含其他键。
标签: javascript loops recursion