AccessorArray

Create a minimal array-like object supporting the accessor protocol from another array-like object.

Usage

var AccessorArray = require( '@stdlib/array/base/accessor' );

AccessorArray( arr )

Creates a minimal array-like object supporting the accessor protocol from another array-like object.

var arr = new AccessorArray( [ 1, 2, 3 ] );
// returns <AccessorArray>

Properties

AccessorArray.prototype.length

Number of array elements.

var arr = new AccessorArray( [ 1, 2, 3 ] );
// returns <AccessorArray>

var len = arr.length;
// returns 3

Methods

AccessorArray.prototype.get( i )

Returns an array element located at position (index) i.

var arr = new AccessorArray( [ 1, 2, 3 ] );

// Get the first element:
var v = arr.get( 0 );
// returns 1

AccessorArray.prototype.set( v[, i] )

Sets an array element.

var arr = new AccessorArray( [ 1, 2, 3 ] );

// Get the first element:
var v = arr.get( 0 );
// returns 1

// Set the first element:
arr.set( 5 );

// Get the first element:
v = arr.get( 0 );
// returns 5

By default, the method sets array elements starting at position (index) i = 0. To set elements starting elsewhere in the array, provide an index argument i.

var arr = new AccessorArray( [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] );

// Get the fifth element:
var v = arr.get( 4 );
// returns 5

// Set the fifth element:
arr.set( 11, 4 );

// Get the fifth element:
v = arr.get( 4 );
// returns 11

Examples

var AccessorArray = require( '@stdlib/array/base/accessor' );

// Define a class for creating a minimal sparse array-like object...
function SparseArray( len, values ) {
    this.length = len;
    this._data = values;
    return this;
}

SparseArray.prototype.get = function get( i ) {
    var v = this._data[ i ];
    if ( v === void 0 ) {
        return 0;
    }
    return v;
};

SparseArray.prototype.set = function set( v, i ) {
    this._data[ i ] = v;
};

// Define a function for printing the contents of an array and which assumes accessor protocol support:
function printArray( name, x ) {
    var i;
    for ( i = 0; i < x.length; i++ ) {
        console.log( '%s[%d] = %d', name, i, x.get( i ) );
    }
}

// Create a sparse array-like object:
var sparse = new SparseArray( 10, {
    '2': 1,
    '3': 2,
    '8': 3
});

// Create a dense array:
var arr = [ 0, 0, 1, 2, 0, 0, 0, 0, 3, 0 ];

// Convert the dense array to an accessor array to allow for uniform iteration:
var dense = new AccessorArray( arr );

// Print the contents of each array...
printArray( 'sparse', sparse );
printArray( 'dense', dense );
Did you find this page helpful?