function map(obj, action, settings) {
    /*jshint laxbreak:true*/
    var target;
    switch (getClass(obj)) {
        case "Array":
            target = [];
            break;
        case "Map":
            target = new Map();
            break;
        case "Set":
            target = new Set();
            break;
        default:
            target = {};
    }
    settings = settings
                ? copy(settings, {})
                : {};
    settings.transform = action;
    return copy(obj, target, settings);
}
/**
 * Create new object containing all or filtered fields of the source object/map/array/set,
 * applying specified action/transformation for field values.
 * 
 * @param {Array | Object} obj
 *      Object/map/array/set whose fields should be copied.
 * @param {Function | String} action
 *      An action/operation that should be applied to get field value that will be saved in created object.
 *      See description of `transform` setting of {@link module:adam.copy copy}.
 * @param {Object} [settings]
 *     Operation settings. Keys are settings names, values are corresponding settings values.
 *     The following settings are supported:
 *     
 *   * `filter` - a filter that should be used to select fields for copying (see {@link module:adam.checkField checkField});
 *      fields conforming to the filter will be copied in created object
 *   * `filterConnect`: `String` - a boolean connector that should be used when array of filters is specified
 *      in `filter` setting (see {@link module:adam.checkField checkField})
 * @return {Object}
 *      Created object containing processed fields.
 * @alias module:adam.map
 * @see {@link module:adam.checkField checkField}
 * @see {@link module:adam.copy copy}
 */
Create new object containing all or filtered fields of the source object/map/array/set,
applying specified action/transformation for field values.

@param {Array | Object} obj
Object/map/array/set whose fields should be copied.
@param {Function | String} action
An action/operation that should be applied to get field value that will be saved in created object.
See description of `transform` setting of  module:adam.copy copy.
@param {Object} [settings]
Operation settings. Keys are settings names, values are corresponding settings values.
The following settings are supported.


Create new object containing all or filtered fields of the source object / map / array / set applying specified action / transformation for field values . @param { Array | Object } obj Object / map / array / set whose fields should be copied . @param { Function | String } action An action / operation that should be applied to get field value that will be saved in created object . See description of ` transform ` setting of module : adam . copy copy . @param { Object } [ settings ] Operation settings . Keys are settings names values are corresponding settings values . The following settings are supported .
function map(obj, action, settings) {
    var target;
    switch (getClass(obj)) {
        case "Array":
            target = [];
            break;
        case "Map":
            target = new Map();
            break;
        case "Set":
            target = new Set();
            break;
        default:
            target = {};
    }
    settings = settings
                ? copy(settings, {})
                : {};
    settings.transform = action;
    return copy(obj, target, settings);
}
function map ( obj , action , settings ) { var target ; switch ( getClass ( obj ) ) { case "Array" : target = [ ] ; break ; case "Map" : target = new Map ( ) ; break ; case "Set" : target = new Set ( ) ; break ; default : target = { } ; } settings = settings ? copy ( settings , { } ) : { } ; settings . transform = action ; return copy ( obj , target , settings ) ; }
Create new object containing all or filtered fields of the source object/map/array/set,
 applying specified action/transformation for field values.
Create new object containing all or filtered fields of the source object / map / array / set applying specified action / transformation for field values .
/*jshint laxbreak:true*/