Это более динамичный способ приблизиться к генерации объекта.По сути, этот подход поддерживает массив конкретных ключей, которые являются целью для генерации желаемого результата.
const collection = [{ id: 1, url: 'http://url1.com' }, {id: 2, url: 'http://url2.com'}, {id: 3,url: 'http://url3.com'}],
keyAsEntries = [["id", "url"]];
let result = collection.reduce((a, c) => {
keyAsEntries.forEach(([key, value]) => Object.assign(a, {[c[key]]: c[value]}));
return a;
}, Object.create(null));
console.log(result);
.as-console-wrapper { min-height: 100%; }