我需要用Javascript从列表中生成几个对象,用Python,我会这样写:
{key_maker(x): val_maker(x) for x in a_list}
另一种方法是问是否存在像jQuery.map()
这样的聚合对象的东西?下面是我的猜测(不起作用):
var result = {}
$.map(a_list, function(x) {
$.extend(result, {key_maker(x): val_maker(x)})
})
我需要用Javascript从列表中生成几个对象,用Python,我会这样写:
{key_maker(x): val_maker(x) for x in a_list}
另一种方法是问是否存在像jQuery.map()
这样的聚合对象的东西?下面是我的猜测(不起作用):
var result = {}
$.map(a_list, function(x) {
$.extend(result, {key_maker(x): val_maker(x)})
})
7条答案
按热度按时间jc3wubiy1#
下面是一个不使用reduce的版本:
Object.fromEntries与Lodash中的_.fromPairs基本相同,这感觉最像Python的dict理解。
5sxhfpxr2#
假设
a_list
是一个Array,最接近的可能是使用.reduce()
。数组解析可能会出现在JavaScript的未来版本中。
您可以使用MDN提供的兼容性补丁来修补不符合ES5的实现。
如果
a_list
不是Array,而是普通对象,则可以使用Object.keys()
执行相同的操作。hivapdat3#
老问题,但答案在新版本的Javascript中略有变化。使用ES2015(ES6),您可以实现如下的一行对象理解:
g6ll5ycj4#
ES5为 * OrderedDict * 引入了
Map
。Map解析可能如下所示:示例:
vmjh9lq95#
也许是这样的,使用Lodash:第一个月
8wtpewkr6#
较短的ES6版本为:
yqkkidmi7#
我使用的是最新版本的 typescript ,我使用