我正在遍历对象并希望在新对象中包含匹配的结果。我想丢弃/忽略的不匹配结果。
问题是我得到一个带有空条目的对象,其中方法内没有匹配项,例如
[[[[[null, null], null, null], <Layer id:10 name:card2 (0,1033) 894x812>]]]
我真正想要的只是
<Layer id:10 name:card2 (0,1033) 894x812>
该函数应该递归地查看对象内部,直到找到第一个匹配实例并返回它。(我也会满足于收集所有匹配的实例,而不仅仅是第一个)
r = (n, obj) ->
if obj.name is n
obj
else if typeof obj is "object"
obj = obj.subLayers
for key, value of obj
if value.name is n
value
else if value.subLayers.length
r(n, value)
else
null
l = r("card2",wrapper)
print l
对于上下文,这是针对Framer.js的,上面的示例在这里http://share.framerjs.com/6qax51amay0v/
我不确定这对于这个例子是否重要,我想做的是完全跳过不匹配的值,但r()
总是返回一些东西并在捕获输出的变量中创建一个空条目。也许什么都不返回就是答案,或者它不应该添加另一个对象元素[]