The map, findWhere and extension should do the trick:
var combined = _.map(basic, function(base){ return _.extend(base, _.findWhere(ext, { id: base.id} )); });
Edit
If performance is a problem, create a hash of extended values:
var extHash = _.reduce(ext, function(memo, extended, key){ memo[extended.id] = extended; return memo; }, {});
and use like this:
var combined = _.map(basic, function(base){ return _.extend(base, extHash[base.id]); });
Fiddle
source share