我们说我有两个对象:
coffee> objA = {a: 4, b: [1,2,3,4], c: [5,6,7]}
{ a: 4, b: [ 1, 2, 3, 4 ], c: [ 5, 6, 7 ] }
coffee> objB = { a: 4, b: [ 1, 2, 3, 4 ] }
{ a: 4, b: [ 1, 2, 3, 4 ] }
我想通过相同的循环运行它们:
do (obj) ->
for n in obj.b
do (b) ->
... stuff here
for n in obj.c
do (c) ->
... stuff here
但c
可能不存在,所以我在前面添加if
:
do (obj) ->
for n in obj.b
do (b) ->
... stuff here
if obj.c?
for n in obj.c
do (c) ->
... stuff here
这让我想知道是否有更好的方法来处理if obj.c?
。我认为when
会处理它,但是在分配循环对象后评估when,导致TypeError: Cannot read property 'length' of undefined
。
答案 0 :(得分:3)
您可以使用问号的零替代形式:
objB = { a: 4, b: [ 1, 2, 3, 4 ] }
for n in objB.c ? []
console.debug("Hi there #{n}")