防止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:我可以通过单个方法调用将新模型实例列表添加到数据库吗?