# Strided Iterator
> Create an [iterator][mdn-iterator-protocol] from a strided array-like object.
## Usage
```javascript
var stridedarray2iterator = require( '@stdlib/array/to-strided-iterator' );
```
#### stridedarray2iterator( N, src, stride, offset\[, mapFcn\[, thisArg]] )
Returns an [iterator][mdn-iterator-protocol] which iterates over elements in an array-like `object` according to specified stride parameters.
```javascript
var values = [ 1, 2, 3, 4, 5, 6, 7, 8 ];
var N = 4;
var stride = -2;
var offset = 6;
var it = stridedarray2iterator( N, values, stride, offset );
// returns
## Notes
- If an environment supports `Symbol.iterator`, the returned [iterator][mdn-iterator-protocol] is iterable.
- If provided a generic `array`, the returned [iterator][mdn-iterator-protocol] does **not** ignore holes. To achieve greater performance for sparse arrays, use a custom [iterator][mdn-iterator-protocol].
- A returned [iterator][mdn-iterator-protocol] does **not** copy a provided array-like `object`. To ensure iterable reproducibility, copy a provided array-like `object` **before** creating an [iterator][mdn-iterator-protocol]. Otherwise, any changes to the contents of an array-like `object` will be reflected in the returned [iterator][mdn-iterator-protocol].
- In environments supporting `Symbol.iterator`, the function **explicitly** does **not** invoke an array's `@@iterator` method, regardless of whether this method is defined. To convert an array to an implementation defined [iterator][mdn-iterator-protocol], invoke this method directly.
## Examples
```javascript
var Float64Array = require( '@stdlib/array/float64' );
var inmap = require( '@stdlib/utils/inmap' );
var randu = require( '@stdlib/random/base/randu' );
var stridedarray2iterator = require( '@stdlib/array/to-strided-iterator' );
function scale( v, i ) {
return v * (i+1);
}
// Create an array filled with random numbers:
var arr = inmap( new Float64Array( 100 ), randu );
// Create an iterator which scales every fourth value in reverse order:
var it = stridedarray2iterator( 25, arr, -4, 99, scale );
// Perform manual iteration...
var v;
while ( true ) {
v = it.next();
if ( v.done ) {
break;
}
console.log( v.value );
}
```
[mdn-iterator-protocol]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterator_protocol