foop
Version:
interfaces that describe their intentions.
44 lines (39 loc) • 3.68 kB
JavaScript
var ObjectKeys = require('../../util/keys')
var preAllocate = require('../../array/preAllocate')
/**
* Creates an array of values by running each property of `object` thru
* `iteratee`. The iteratee is invoked with three arguments: (value, key, object).
*
* @name mapObjVals
* @since 5.0.0-beta.6
* @memberOf loop
*
* @param {Object} object The object to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @return {Array} Returns the new mapped array.
*
* @func
* @category Object
*
* {@link https://github.com/lodash/lodash/blob/master/map.js lodash-map}
* @see {@link lodash-map}
*
* @example
*
* const square = n => n * n
* map({ 'a': 4, 'b': 8 }, square)
* //=> [16, 64] (iteration order is not guaranteed)
*
*/
function mapObjectValues(object, iteratee) {
var props = ObjectKeys(object)
var result = new Array(props.length)
for (var index = 0; index < props.length; index++) {
var key = props[index]
var value = object[key]
result[index] = iteratee(value, key, object)
}
return result
}
module.exports = mapObjectValues
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwT2JqVmFscy5qcyIsInNvdXJjZXMiOlsibWFwT2JqVmFscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBPYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vLi4vdXRpbC9rZXlzJylcbmNvbnN0IHByZUFsbG9jYXRlID0gcmVxdWlyZSgnLi4vLi4vYXJyYXkvcHJlQWxsb2NhdGUnKVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGJ5IHJ1bm5pbmcgZWFjaCBwcm9wZXJ0eSBvZiBgb2JqZWN0YCB0aHJ1XG4gKiBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBrZXksIG9iamVjdCkuXG4gKlxuICogQG5hbWUgbWFwT2JqVmFsc1xuICogQHNpbmNlIDUuMC4wLWJldGEuNlxuICogQG1lbWJlck9mIGxvb3BcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm4ge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICpcbiAqIEBmdW5jXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKlxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvbWFzdGVyL21hcC5qcyBsb2Rhc2gtbWFwfVxuICogQHNlZSB7QGxpbmsgbG9kYXNoLW1hcH1cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgY29uc3Qgc3F1YXJlID0gbiA9PiBuICogblxuICogICBtYXAoeyAnYSc6IDQsICdiJzogOCB9LCBzcXVhcmUpXG4gKiAgIC8vPT4gWzE2LCA2NF0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKi9cbmZ1bmN0aW9uIG1hcE9iamVjdFZhbHVlcyhvYmplY3QsIGl0ZXJhdGVlKSB7XG4gIGNvbnN0IHByb3BzID0gT2JqZWN0S2V5cyhvYmplY3QpXG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheShwcm9wcy5sZW5ndGgpXG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHByb3BzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGtleSA9IHByb3BzW2luZGV4XVxuICAgIGNvbnN0IHZhbHVlID0gb2JqZWN0W2tleV1cbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqZWN0KVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcE9iamVjdFZhbHVlc1xuIl0sIm5hbWVzIjpbImNvbnN0IiwibGV0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7QUFDN0NBLEdBQUssQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQnRELFNBQVMsZUFBZSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7RUFDekNBLEdBQUssQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztFQUNoQ0EsR0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDOztFQUV0QyxLQUFLQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtJQUNqREQsR0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3hCQSxHQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDekIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQztHQUM3Qzs7RUFFRCxPQUFPLE1BQU07Q0FDZDs7QUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLGVBQWU7In0=