[Javascript] convert-object-array-to-hash-map-indexed-by-an-attribute-value-of-the-object
var arr = [
{ key: 'foo', val: 'bar' },
{ key: 'hello', val: 'world' }
];
var result = arr.reduce(function(map, obj) {
map[obj.key] = obj.val;
return map;
}, {});
console.log(result);
// { foo: 'bar', hello: 'world' }
Note:
Array.prototype.reduce()
is IE9+, so if you need to support older browsers you will need to polyfill it.var keyData = [
{ 'dir': 'left', 'code': 97 },
{ 'dir': 'right', 'code': 100 }
];
_.indexBy(keyData, 'dir');
// → { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
_.indexBy(keyData, function(object) {
return String.fromCharCode(object.code);
});
// → { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
_.indexBy(keyData, function(object) {
return this.fromCharCode(object.code);
}, String);
// → { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
留言
張貼留言