foop
Version:
interfaces that describe their intentions.
46 lines (41 loc) • 3.79 kB
JavaScript
var ObjectKeys = require('../../util/keys')
var toArray = require('../../cast/toArray')
var preAllocate = require('../../array/preAllocate')
/**
* The opposite of `mapValue` this method creates an ARRAY with the
* same values as `ARRAY` and keys generated by running each own enumerable
* string keyed property of `ARRAY` thru `iteratee`. The iteratee is invoked
* with three arguments: (value, key, ARRAY).
* @since 5.0.0-beta.6
* @memberOf loop
* @alias mapArrayIndex
* @alias mapArrayIndexes
* @alias mapIndex
*
* @param {Array} array The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @return {Array} Returns the new mapped ARRAY.
*
* @fork 3.8.0
* @category Array
*
* @see mapValue
*
* @example
*
* mapKey({ 'a': 1, 'b': 2 }, (value, key) => key + value)
* //=> { 'a1': 1, 'b2': 2 }
*
*/
function mapIndex(array, iteratee) {
// const arr = toArray(array)
var result = preAllocate(array)
for (var i = 0; i < array.length; i++) {
var key = array[i]
var value = array[key]
result[iteratee(value, key, array)] = value
}
return result
}
module.exports = mapIndex
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwQXJyYXlLZXlzLmpzIiwic291cmNlcyI6WyJtYXBBcnJheUtleXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uLy4uL3V0aWwva2V5cycpXG5jb25zdCB0b0FycmF5ID0gcmVxdWlyZSgnLi4vLi4vY2FzdC90b0FycmF5JylcbmNvbnN0IHByZUFsbG9jYXRlID0gcmVxdWlyZSgnLi4vLi4vYXJyYXkvcHJlQWxsb2NhdGUnKVxuXG4vKipcbiAqIFRoZSBvcHBvc2l0ZSBvZiBgbWFwVmFsdWVgIHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gQVJSQVkgd2l0aCB0aGVcbiAqIHNhbWUgdmFsdWVzIGFzIGBBUlJBWWAgYW5kIGtleXMgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgZWFjaCBvd24gZW51bWVyYWJsZVxuICogc3RyaW5nIGtleWVkIHByb3BlcnR5IG9mIGBBUlJBWWAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBBUlJBWSkuXG4gKiBAc2luY2UgNS4wLjAtYmV0YS42XG4gKiBAbWVtYmVyT2YgbG9vcFxuICogQGFsaWFzIG1hcEFycmF5SW5kZXhcbiAqIEBhbGlhcyBtYXBBcnJheUluZGV4ZXNcbiAqIEBhbGlhcyBtYXBJbmRleFxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybiB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgQVJSQVkuXG4gKlxuICogQGZvcmsgMy44LjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICpcbiAqIEBzZWUgbWFwVmFsdWVcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgbWFwS2V5KHsgJ2EnOiAxLCAnYic6IDIgfSwgKHZhbHVlLCBrZXkpID0+IGtleSArIHZhbHVlKVxuICogICAvLz0+IHsgJ2ExJzogMSwgJ2IyJzogMiB9XG4gKlxuICovXG5mdW5jdGlvbiBtYXBJbmRleChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgLy8gY29uc3QgYXJyID0gdG9BcnJheShhcnJheSlcbiAgY29uc3QgcmVzdWx0ID0gcHJlQWxsb2NhdGUoYXJyYXkpXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGtleSA9IGFycmF5W2ldXG4gICAgY29uc3QgdmFsdWUgPSBhcnJheVtrZXldXG4gICAgcmVzdWx0W2l0ZXJhdGVlKHZhbHVlLCBrZXksIGFycmF5KV0gPSB2YWx1ZVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcEluZGV4XG4iXSwibmFtZXMiOlsiY29uc3QiLCJsZXQiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztBQUM3Q0EsR0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUM7QUFDN0NBLEdBQUssQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJ0RCxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFOztFQUVqQ0EsR0FBSyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDOztFQUVqQyxLQUFLQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNyQ0QsR0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BCQSxHQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFDeEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSztHQUM1Qzs7RUFFRCxPQUFPLE1BQU07Q0FDZDs7QUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLFFBQVE7In0=