code: function mapValues(object, iteratee) {
      var newObject = Object.assign({}, object);
      return Object.keys(object).reduce(function (records, key) {
          records[key] = iteratee(object[key], key, object);
          return records;
      }, newObject);
  }
docs: Creates an object with the same keys as object and values generated by
  running each own enumerable string keyed property of object thru
  iteratee. The iteratee is invoked with three arguments:
  (value, key, object).