You could use Object.assign and map the objects with generated computed property names and values.
var data = [{ name: 'foo', type: 'fizz', val: 9 }, { name: 'boo', type: 'buzz', val: 3 }, { name: 'bar', type: 'fizz', val: 4 }, { name: 'car', type: 'buzz', val: 7 }],
object = Object.assign({}, ...data.map(o => ({ [o.val]: o.name })));
console.log(object);
.as-console-wrapper { max-height: 100% !important; top: 0; }