Lodash keyBy
by findango
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
<script>
function stringify(value) {
return typeof value === 'object' ?
JSON.stringify(value, null, 2) :
value;
}
function log() {
var args = Array.prototype.slice.call(arguments, 0);
document.getElementById('output').innerHTML += args.map(stringify).join(" ") + "\n";
}
</script>
<pre id="output"></pre>
JavaScript
const { chain, keyBy, mapValues } = _;
const list = [
{ name: 'foo', amount: 1, other: 17, type: 'A' },
{ name: 'bar', amount: 2, other: 21, type: 'B' },
{ name: 'baz', amount: 3, other: 36, type: 'A' },
{ name: 'boz', amount: 2, other: 15, type: 'B' },
{ name: 'biz', amount: 1, other: 21 },
];
log(
'compose',
mapValues(keyBy(list, 'name'), 'other')
);
log(
'chain',
chain(list).keyBy('name').mapValues('other').value()
);