在Python中,如果你有一个由
之类的列表组成的字典 mydict = {'foo': [], 'bar':[3, 4]}
如果您想在列表中添加内容,可以执行
mydict.setdefault('baz', []).append(5)
不写
key, list_element = 'baz', 5
if key in mydict:
mydict[key].append(list_element)
else:
mydict[key] = [list_element]
在Coffeescript中有相同的效果吗?
答案 0 :(得分:8)
我建议不要使用||
/ or
来测试会员资格 - 它基本上是一个聪明的技巧,可以默默地对付虚假值。我更喜欢写
( mydict[ name ]?= [] ).push value
我觉得更清楚;假设mydict
没有name
或{。}}的条目
该值为null
或undefined
,此时应将空列表放在那里。
答案 1 :(得分:1)
这是一个选项:
(mydict.baz or (mydict.baz = [])).push(5)
在这种情况下,CoffeeScript与它生成的JavaScript非常相似:
(mydict.baz || (mydict.baz = [])).push(5);
答案 2 :(得分:0)
如果您不介意使用underscore.js
。
http://underscorejs.org/#defaults
var iceCream = {flavor : "chocolate"};
_.defaults(iceCream, {flavor : "vanilla", sprinkles : "lots"});
=> {flavor : "chocolate", sprinkles : "lots"}