keyByRight

    Convert a collection to an object whose keys are determined by a provided function and whose values are the collection values, iterating from right to left.

    Usage

    var keyByRight = require( '@stdlib/utils/key-by-right' );
    

    keyByRight( collection, fcn[, thisArg ] )

    Converts a collection to an object whose keys are determined by a provided function and whose values are the collection values, iterating from right to left.

    function toKey( value ) {
        return value.a;
    }
    
    var arr = [
        { 'a': 1 },
        { 'a': 2 }
    ];
    
    var out = keyByRight( arr, toKey );
    // returns { '2': { 'a': 2 }, '1': { 'a': 1 } }
    

    The invoked function is provided two arguments:

    • value: collection element
    • index: collection index

    To set the function execution context, provide a thisArg.

    function toKey( value, index ) {
        this.sum += value;
        this.count += 1;
        return index;
    }
    
    var arr = [ 1, 2, 3, 4 ];
    
    var context = {
        'sum': 0,
        'count': 0
    };
    
    var out = keyByRight( arr, toKey, context );
    // returns { '3': 4, '2': 3, '1': 2, '0': 1 }
    
    var mean = context.sum / context.count;
    // returns 2.5
    

    Notes

    • A collection may be either an Array, Typed Array, or an array-like Object (excluding strings and functions).
    • If more than one element in a collection resolves to the same key, the key value is the collection element which last resolved to the key.
    • Object values are shallow copies.

    Examples

    var keyByRight = require( '@stdlib/utils/key-by-right' );
    
    var arr;
    var obj;
    var i;
    
    function toKey( value ) {
        return value.name;
    }
    
    arr = new Array( 100 );
    for ( i = 0; i < arr.length; i++ ) {
        arr[ i ] = {
            'name': 'v'+i,
            'value': i
        };
    }
    
    obj = keyByRight( arr, toKey );
    console.log( obj );