我有单独的配置文件,这些文件是分开的,因为一个包含密码和其他敏感数据,另一个我不介意让世界看到。假设我有:
sensitivedata = { password : 'foobaz', hostname : 'quux' };
globalconfig = { timeout : 86400, port : 5190 };
并且我希望 globalconfig
具有字段 password
和 hostname
。我只能这样做:
globalconfig.hostname = sensitivedata.hostname;
globalconfig.password = sensitivedata.password;
但是当有很多字段时,这很乏味。作为一名 perl 程序员,我想做这样的事情:
@{ $globalconfig }{ keys %{ $sensitivedata } } =
@{ $sensitivedata }{ keys %{ $sensitivedata } };
# or ...
@{ $globalconfig }{ qw{ password hostname } } =
@{ $sensitivedata }{ qw{ password hostname } };
这也可以用 map
来完成,但这正是我们在 perl 中使用 hashrefslice 语法的目的。是否有一种单语句方法可以将一堆字段从一个字典映射到另一个字典?
当我写这篇文章时,我突然想到我也可以在 perl 中这样做:
subname( { %$globalconfig, %$sensitivedata } );
…为了传递它们的参数,将两个散列连接成一个新的匿名散列,但我不确定如何在 javascript 中“取消引用”字典/散列。该解决方案还结合了两个字典,而没有特别引用元素(如果我只想要 globalconfig
中的一些而不是全部 sensitivedata
)。
请温柔一点;我并不是要煽动“我的语言与你的语言”的事情。我非常喜欢node,我只是想借用我熟悉的成语并高效地编写我的代码。
最佳答案
我不相信 javascript 提供了一种本地方式来做到这一点;如果你不是在谈论服务器端,https://github.com/stephenlb/jquery-hashslice/blob/master/jquery.hashslice.js可能会满足您的需求。
关于node.js - 合并两个字典 : perl "hashrefslice" syntax in javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21371350/