sprinter.js
function mergeIssuesAndPrs(issues, prs) {
    _.each(issues, function(issue) {
        var targetPr
          , targetPrIndex = _.findIndex(prs, function(pr) {
              return pr && pr.number == issue.number;
          });
        if (targetPrIndex > -1) {
            targetPr = prs[targetPrIndex];
            prs[targetPrIndex] = _.merge(targetPr, issue);
        }
    });
    return prs;
}
function mergeIssuesAndPrs(issues, prs) {
    _.each(issues, function(issue) {
        var targetPr
          , targetPrIndex = _.findIndex(prs, function(pr) {
              return pr && pr.number == issue.number;
          });
        if (targetPrIndex > -1) {
            targetPr = prs[targetPrIndex];
            prs[targetPrIndex] = _.merge(targetPr, issue);
        }
    });
    return prs;
}
Given a list of issues and pull requests, populate the additional properties
that exist within any issues into the PR objects so they contain as much info
as possible.
@param issues {Object[]}
@param prs {Object[]}