## Index * [new Index(...ranges)](#new_Index_new) * _instance_ * [.valueOf](#Index+valueOf) ⇒ Array * [.clone()](#Index+clone) ⇒ [Index](#Index) * [.size()](#Index+size) ⇒ Array.<number> * [.max()](#Index+max) ⇒ Array.<number> * [.min()](#Index+min) ⇒ Array.<number> * [.forEach(callback)](#Index+forEach) * [.dimension(dim)](#Index+dimension) ⇒ Range | null * [.isScalar()](#Index+isScalar) ⇒ boolean * [.toArray()](#Index+toArray) ⇒ Array * [.toString()](#Index+toString) ⇒ String * [.toJSON()](#Index+toJSON) ⇒ Object * _static_ * [.fromJSON(json)](#Index.fromJSON) ⇒ [Index](#Index) ### new Index(...ranges) Create an index. An Index can store ranges and sets for multiple dimensions. Matrix.get, Matrix.set, and math.subset accept an Index as input. Usage: ```js const index = new Index(range1, range2, matrix1, array1, ...) ``` Where each parameter can be any of: - A number - An instance of Range - An Array with the Set values - A Matrix with the Set values The parameters start, end, and step must be integer numbers. | Param | Type | | --- | --- | | ...ranges | \* | ### index.valueOf ⇒ Array Get the primitive value of the Index, a two dimensional array. Equivalent to Index.toArray(). **Kind**: instance property of [Index](#Index) **Returns**: Array - array ### index.clone() ⇒ [Index](#Index) Create a clone of the index **Kind**: instance method of [Index](#Index) **Returns**: [Index](#Index) - clone ### index.size() ⇒ Array.<number> Retrieve the size of the index, the number of elements for each dimension. **Kind**: instance method of [Index](#Index) **Returns**: Array.<number> - size ### index.max() ⇒ Array.<number> Get the maximum value for each of the indexes ranges. **Kind**: instance method of [Index](#Index) **Returns**: Array.<number> - max ### index.min() ⇒ Array.<number> Get the minimum value for each of the indexes ranges. **Kind**: instance method of [Index](#Index) **Returns**: Array.<number> - min ### index.forEach(callback) Loop over each of the ranges of the index **Kind**: instance method of [Index](#Index) | Param | Type | Description | | --- | --- | --- | | callback | function | Called for each range with a Range as first argument, the dimension as second, and the index object as third. | ### index.dimension(dim) ⇒ Range | null Retrieve the dimension for the given index **Kind**: instance method of [Index](#Index) **Returns**: Range | null - range | Param | Type | Description | | --- | --- | --- | | dim | Number | Number of the dimension | ### index.isScalar() ⇒ boolean Test whether this index contains only a single value. This is the case when the index is created with only scalar values as ranges, not for ranges resolving into a single value. **Kind**: instance method of [Index](#Index) **Returns**: boolean - isScalar ### index.toArray() ⇒ Array Expand the Index into an array. For example new Index([0,3], [2,7]) returns [[0,1,2], [2,3,4,5,6]] **Kind**: instance method of [Index](#Index) **Returns**: Array - array ### index.toString() ⇒ String Get the string representation of the index, for example '[2:6]' or '[0:2:10, 4:7, [1,2,3]]' **Kind**: instance method of [Index](#Index) **Returns**: String - str ### index.toJSON() ⇒ Object Get a JSON representation of the Index **Kind**: instance method of [Index](#Index) **Returns**: Object - Returns a JSON object structured as: `{"mathjs": "Index", "ranges": [{"mathjs": "Range", start: 0, end: 10, step:1}, ...]}` ### Index.fromJSON(json) ⇒ [Index](#Index) Instantiate an Index from a JSON object **Kind**: static method of [Index](#Index) | Param | Type | Description | | --- | --- | --- | | json | Object | A JSON object structured as: `{"mathjs": "Index", "dimensions": [{"mathjs": "Range", start: 0, end: 10, step:1}, ...]}` |