function fromArray(list, keyField, settings) {
    /*jshint laxbreak:true*/
    var nL = list.length,
        result = {},
        bAll, bMap, bDeleteKeyField, bFuncKey, filter, filterConnect, item, field, nI, sKeyName;
    if (nL) {
        if (! settings) {
            settings = {};
        }
        bAll = ! ("filter" in settings);
        filter = bAll ? null : settings.filter;
        filterConnect = settings.filterConnect;
        bFuncKey = typeof keyField === "function";
        bDeleteKeyField = Boolean(settings.deleteKeyField && keyField);
        if (! bFuncKey) {
            sKeyName = keyField;
        }
        for (nI = 0; nI < nL; nI++) {
            item = list[nI];
            bMap = isMap(item, true);
            if (bFuncKey) {
                field = sKeyName = keyField(item, result, nI, settings);
            }
            else {
                field = sKeyName
                    ? (bMap
                        ? item.get(sKeyName)
                        : item[sKeyName]
                    )
                    : item;
                if (typeof field === "function") {
                    field = field.call(item);
                }
            }
            if (bAll || checkField(result, field, filter, {value: item, filterConnect: filterConnect})) {
                if (bDeleteKeyField) {
                    if (bMap) {
                        item.delete(sKeyName);
                    }
                    else {
                        delete item[sKeyName];
                    }
                }
                result[field] = item;
            }
        }
    }
    return result;
}
/**
 * Create object (map) from list of objects/maps.
 * Fields of the created object are values of specified field/key of objects/maps,
 * values of the created object are corresponding items of the list.
 * 
 * @param {Array} list
 *      List of objects/values to be processed.
 * @param {Function | String} [keyField]
 *      Specifies names of fields of the created object. Can be name of field or method whose value is used
 *      as field name of the created object, or function that returns the field name.
 *      In the latter case the following parameters will be passed in the function:
 *      the source object (an item of the list), the created object, the index of the source object, operation settings.
 *      When the parameter is not set, items of the list are used as field names.
 * @param {Object} [settings]
 *     Operation settings. Keys are settings names, values are corresponding settings values.
 *     The following settings are supported (setting's default value is specified in parentheses):
 *     
 *   * `deleteKeyField`: `Boolean` (`false`) - specifies whether key field (whose value is field name of the created object)
 *     should be deleted from the source object (an item of the list)
 *   * `filter` - a filter specifying objects that should be included into result (see {@link module:adam.checkField checkField});
 *     an item of the list will be used as value for check
 *   * `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}
 *      Object created from the given list.
 * @alias module:adam.fromArray
 * @see {@link module:adam.checkField checkField}
 */
Create object (map) from list of objects/maps.
Fields of the created object are values of specified field/key of objects/maps,
values of the created object are corresponding items of the list.

@param {Array} list
List of objects/values to be processed.
@param {Function | String} [keyField]
Specifies names of fields of the created object. Can be name of field or method whose value is used
as field name of the created object, or function that returns the field name.
In the latter case the following parameters will be passed in the function:
the source object (an item of the list), the created object, the index of the source object, operation settings.
When the parameter is not set, items of the list are used as field names.
@param {Object} [settings]
Operation settings. Keys are settings names, values are corresponding settings values.
The following settings are supported (setting's default value is specified in parentheses).


Create object ( map ) from list of objects / maps . Fields of the created object are values of specified field / key of objects / maps values of the created object are corresponding items of the list . @param { Array } list List of objects / values to be processed . @param { Function | String } [ keyField ] Specifies names of fields of the created object . Can be name of field or method whose value is used as field name of the created object or function that returns the field name . In the latter case the following parameters will be passed in the function : the source object ( an item of the list ) the created object the index of the source object operation settings . When the parameter is not set items of the list are used as field names . @param { Object } [ settings ] Operation settings . Keys are settings names values are corresponding settings values . The following settings are supported ( setting ' s default value is specified in parentheses ) .
function fromArray(list, keyField, settings) {
    var nL = list.length,
        result = {},
        bAll, bMap, bDeleteKeyField, bFuncKey, filter, filterConnect, item, field, nI, sKeyName;
    if (nL) {
        if (! settings) {
            settings = {};
        }
        bAll = ! ("filter" in settings);
        filter = bAll ? null : settings.filter;
        filterConnect = settings.filterConnect;
        bFuncKey = typeof keyField === "function";
        bDeleteKeyField = Boolean(settings.deleteKeyField && keyField);
        if (! bFuncKey) {
            sKeyName = keyField;
        }
        for (nI = 0; nI < nL; nI++) {
            item = list[nI];
            bMap = isMap(item, true);
            if (bFuncKey) {
                field = sKeyName = keyField(item, result, nI, settings);
            }
            else {
                field = sKeyName
                    ? (bMap
                        ? item.get(sKeyName)
                        : item[sKeyName]
                    )
                    : item;
                if (typeof field === "function") {
                    field = field.call(item);
                }
            }
            if (bAll || checkField(result, field, filter, {value: item, filterConnect: filterConnect})) {
                if (bDeleteKeyField) {
                    if (bMap) {
                        item.delete(sKeyName);
                    }
                    else {
                        delete item[sKeyName];
                    }
                }
                result[field] = item;
            }
        }
    }
    return result;
}
function fromArray ( list , keyField , settings ) { var nL = list . length , result = { } , bAll , bMap , bDeleteKeyField , bFuncKey , filter , filterConnect , item , field , nI , sKeyName ; if ( nL ) { if ( ! settings ) { settings = { } ; } bAll = ! ( "filter" in settings ) ; filter = bAll ? null : settings . filter ; filterConnect = settings . filterConnect ; bFuncKey = typeof keyField === "function" ; bDeleteKeyField = Boolean ( settings . deleteKeyField && keyField ) ; if ( ! bFuncKey ) { sKeyName = keyField ; } for ( nI = 0 ; nI < nL ; nI ++ ) { item = list [ nI ] ; bMap = isMap ( item , true ) ; if ( bFuncKey ) { field = sKeyName = keyField ( item , result , nI , settings ) ; } else { field = sKeyName ? ( bMap ? item . get ( sKeyName ) : item [ sKeyName ] ) : item ; if ( typeof field === "function" ) { field = field . call ( item ) ; } } if ( bAll || checkField ( result , field , filter , { value : item , filterConnect : filterConnect } ) ) { if ( bDeleteKeyField ) { if ( bMap ) { item . delete ( sKeyName ) ; } else { delete item [ sKeyName ] ; } } result [ field ] = item ; } } } return result ; }
Create object (map) from list of objects/maps.
Create object ( map ) from list of objects / maps .
/*jshint laxbreak:true*/