在Javascript中的字典理解,或对象`map` [英] In Javascript a dictionary comprehension, or an Object `map`
问题描述
我需要在Javascript中从列表中生成几个对象。在Python中,我写这个:
I need to generate a couple of objects from lists in Javascript. In Python, I'd write this:
{key_maker(x): val_maker(x) for x in a_list}
另一种问题是,是否存在类似 jQuery.map()
哪些聚合对象?这是我的猜测(不起作用):
Another way to ask is does there exist something like jQuery.map()
which aggregates objects? Here's my guess (doesn't work):
var result = {}
$.map(a_list, function(x) {
$.extend(result, {key_maker(x): val_maker(x)})
})
推荐答案
假设 a_list
是一个数组,最接近可能是使用 .reduce()
。
Assuming a_list
is an Array, the closest would probably be to use .reduce()
.
var result = a_list.reduce(function(obj, x) {
obj[key_maker(x)] = val_maker(x);
return obj;
}, {});
未来版本的JavaScript可能会出现数组理解。
Array comprehensions are likely coming in a future version of JavaScript.
您可以使用来自MDN的兼容性补丁。
如果 a_list
不是数组,而是普通对象,您可以使用 Object.keys()
来执行相同的操作。
If a_list
is not an Array, but a plain object, you can use Object.keys()
to perform the same operation.
var result = Object.keys(a_list).reduce(function(obj, x) {
obj[key_maker(a_list[x])] = val_maker(a_list[x]);
return obj;
}, {});
这篇关于在Javascript中的字典理解,或对象`map`的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!