foop
Version:
interfaces that describe their intentions.
55 lines (45 loc) • 6.28 kB
JavaScript
var ENV_DEBUG = require('../../env/debug')
var isArray = require('../../is/array')
var curry = require('../../fp/curry')
var identity = require('../../fp/identity')
var emptyTarget = require('../../dopemerge/emptyTarget')
var defaultTo = require('../../cast/defaultTo')
var objOrArrayKeys = require('../../util/keysObjOrArray')
var size = require('../../util/size')
// const always = require('../../fp/always')
// pipe(nthArg(2), always)
var defaultKeyTransformer = function (value, key) { return key; }
var defaultValTransformer = identity
/**
* @desc maps keys and vals
* probably needs a `mapArrayKeyVal` & `mapObjKeyVal`
* maybe `mapMap` haha
*
* @TODO this is huge perf killer just super easy util
*
* https://github.com/jashkenas/underscore/blob/master/underscore.js#L1021 underscore-map-obj
* @alias mapAny
* @memberOf loop
* @since 5.0.0-beta.6
*/
function mapObjOrArray(obj, onValue, onKey, init) {
var result = defaultTo(emptyTarget(obj), init)
var valTransformer = defaultTo(defaultValTransformer, onValue)
var keyTransformer = defaultTo(defaultKeyTransformer, onKey)
var isArrayObj = isArray(obj)
var keys = objOrArrayKeys(obj)
if (ENV_DEBUG) {
console.log('loop_mapObjOrArray', {keys: keys, result: result, isArrayObj: isArrayObj, obj: obj, init: init})
}
for (var index = 0; index < keys.length; index++) {
var key = isArrayObj ? index : keys[index]
var value = obj[key]
if (ENV_DEBUG) {
console.log('loop_mapObjOrArray', {key: key, value: value, obj: obj, index: index})
}
result[keyTransformer(value, key, obj)] = valTransformer(value, key, obj)
}
return result
}
module.exports = curry(2, mapObjOrArray)
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwT2JqT3JBcnJheS5qcyIsInNvdXJjZXMiOlsibWFwT2JqT3JBcnJheS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBFTlZfREVCVUcgPSByZXF1aXJlKCcuLi8uLi9lbnYvZGVidWcnKVxuY29uc3QgaXNBcnJheSA9IHJlcXVpcmUoJy4uLy4uL2lzL2FycmF5JylcbmNvbnN0IGN1cnJ5ID0gcmVxdWlyZSgnLi4vLi4vZnAvY3VycnknKVxuY29uc3QgaWRlbnRpdHkgPSByZXF1aXJlKCcuLi8uLi9mcC9pZGVudGl0eScpXG5jb25zdCBlbXB0eVRhcmdldCA9IHJlcXVpcmUoJy4uLy4uL2RvcGVtZXJnZS9lbXB0eVRhcmdldCcpXG5jb25zdCBkZWZhdWx0VG8gPSByZXF1aXJlKCcuLi8uLi9jYXN0L2RlZmF1bHRUbycpXG5jb25zdCBvYmpPckFycmF5S2V5cyA9IHJlcXVpcmUoJy4uLy4uL3V0aWwva2V5c09iak9yQXJyYXknKVxuY29uc3Qgc2l6ZSA9IHJlcXVpcmUoJy4uLy4uL3V0aWwvc2l6ZScpXG5cbi8vIGNvbnN0IGFsd2F5cyA9IHJlcXVpcmUoJy4uLy4uL2ZwL2Fsd2F5cycpXG4vLyBwaXBlKG50aEFyZygyKSwgYWx3YXlzKVxuY29uc3QgZGVmYXVsdEtleVRyYW5zZm9ybWVyID0gKHZhbHVlLCBrZXkpID0+IGtleVxuY29uc3QgZGVmYXVsdFZhbFRyYW5zZm9ybWVyID0gaWRlbnRpdHlcblxuLyoqXG4gKiBAZGVzYyBtYXBzIGtleXMgYW5kIHZhbHNcbiAqICAgICAgIHByb2JhYmx5IG5lZWRzIGEgYG1hcEFycmF5S2V5VmFsYCAmIGBtYXBPYmpLZXlWYWxgXG4gKiAgICAgICBtYXliZSBgbWFwTWFwYCBoYWhhXG4gKlxuICogQFRPRE8gdGhpcyBpcyBodWdlIHBlcmYga2lsbGVyIGp1c3Qgc3VwZXIgZWFzeSB1dGlsXG4gKlxuICogaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL2Jsb2IvbWFzdGVyL3VuZGVyc2NvcmUuanMjTDEwMjEgdW5kZXJzY29yZS1tYXAtb2JqXG4gKiBAYWxpYXMgbWFwQW55XG4gKiBAbWVtYmVyT2YgbG9vcFxuICogQHNpbmNlIDUuMC4wLWJldGEuNlxuICovXG5mdW5jdGlvbiBtYXBPYmpPckFycmF5KG9iaiwgb25WYWx1ZSwgb25LZXksIGluaXQpIHtcbiAgY29uc3QgcmVzdWx0ID0gZGVmYXVsdFRvKGVtcHR5VGFyZ2V0KG9iaiksIGluaXQpXG4gIGNvbnN0IHZhbFRyYW5zZm9ybWVyID0gZGVmYXVsdFRvKGRlZmF1bHRWYWxUcmFuc2Zvcm1lciwgb25WYWx1ZSlcbiAgY29uc3Qga2V5VHJhbnNmb3JtZXIgPSBkZWZhdWx0VG8oZGVmYXVsdEtleVRyYW5zZm9ybWVyLCBvbktleSlcblxuICBjb25zdCBpc0FycmF5T2JqID0gaXNBcnJheShvYmopXG4gIGNvbnN0IGtleXMgPSBvYmpPckFycmF5S2V5cyhvYmopXG5cbiAgaWYgKEVOVl9ERUJVRykge1xuICAgIGNvbnNvbGUubG9nKCdsb29wX21hcE9iak9yQXJyYXknLCB7a2V5cywgcmVzdWx0LCBpc0FycmF5T2JqLCBvYmosIGluaXR9KVxuICB9XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3Qga2V5ID0gaXNBcnJheU9iaiA/IGluZGV4IDoga2V5c1tpbmRleF1cbiAgICBjb25zdCB2YWx1ZSA9IG9ialtrZXldXG5cbiAgICBpZiAoRU5WX0RFQlVHKSB7XG4gICAgICBjb25zb2xlLmxvZygnbG9vcF9tYXBPYmpPckFycmF5Jywge2tleSwgdmFsdWUsIG9iaiwgaW5kZXh9KVxuICAgIH1cblxuICAgIHJlc3VsdFtrZXlUcmFuc2Zvcm1lcih2YWx1ZSwga2V5LCBvYmopXSA9IHZhbFRyYW5zZm9ybWVyKHZhbHVlLCBrZXksIG9iailcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjdXJyeSgyLCBtYXBPYmpPckFycmF5KVxu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