防止coffeescript方法将新元素添加到调用它的变量中[重复]

Posted

技术标签:

【中文标题】防止coffeescript方法将新元素添加到调用它的变量中[重复]【英文标题】:Prevent coffeescript method from adding a new element to a variable that called it [duplicate] 【发布时间】:2015-08-26 13:56:00 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

我做了一个快速测试

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

这可能是问题所在?

【讨论】:

以上是关于防止coffeescript方法将新元素添加到调用它的变量中[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Django:我可以通过单个方法调用将新模型实例列表添加到数据库吗?

CoffeeScript:在函数调用中展开数组

Flutter:将新元素添加到列表时保持滚动偏移

Javascript操作DOM元素

python中list添加元素的方法append()和insert()

如何将新的字符串元素添加到字符串系列