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}
A
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;
}, {});
Array comprehensions are likely coming in a future version of JavaScript.
You can patch non ES5 compliant implementations with the compatibility patch from MDN.
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;
}, {});