0

我正在遍历对象并希望在新对象中包含匹配的结果。我想丢弃/忽略的不匹配结果。

问题是我得到一个带有空条目的对象,其中方法内没有匹配项,例如

[[[[[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()总是返回一些东西并在捕获输出的变量中创建一个空条目。也许什么都不返回就是答案,或者它不应该添加另一个对象元素[]

4

1 回答 1

0

我做了一个快速测试

a = null
typeof(a) -> returns "object"

那可能是问题吗?

于 2015-06-11T03:52:59.997 回答