Zip one or more arrays to an array of composite views.
var zip2views = require( '@stdlib/array/base/zip2views' );Zips one or more arrays to an array of composite views.
var x = [ 1, 2, 3 ];
var y = [ 'a', 'b', 'c' ];
var labels = [ 'x', 'y' ];
var z = zip2views( [ x, y ], labels );
// returns [ <Object>, <Object>, <Object> ]
var v0 = z[ 0 ].toJSON();
// returns { 'x': 1, 'y': 'a' }
var v1 = z[ 1 ].toJSON();
// returns { 'x': 2, 'y': 'b' }
var v2 = z[ 2 ].toJSON();
// returns { 'x': 3, 'y': 'c' }
// Mutate one of the input arrays:
x[ 0 ] = 5;
v0 = z[ 0 ].toJSON();
// returns { 'x': 5, 'y': 'a' }
// Set a view property:
z[ 1 ].y = 'beep';
v1 = z[ 1 ].toJSON();
// returns { 'x': 2, 'y': 'beep' }
var y1 = y.slice();
// returns [ 'a', 'beep', 'c' ]The function supports the following parameters:
- arrays: list of arrays to zip.
- labels: list of array labels.
Each element in the returned array is a class instance having prototype properties corresponding to the list of array labels. As demonstrated in the example above, to convert an element to a regular object, invoke an element's toJSON method. Note, however, that the object returned by an element's toJSON method no longer shares the same memory as the provided input arrays.
- The function assumes that the list of arrays to be zipped all have the same length.
- The number of provided array labels should equal the number of arrays to be zipped.
- Each view in the returned array shares the same memory as the corresponding elements in the input arrays. Accordingly, mutation of either an input array or a view will mutate the other.
var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
var zeroTo = require( '@stdlib/array/base/zero-to' );
var zip2views = require( '@stdlib/array/base/zip2views' );
var x = zeroTo( 10 );
var y = discreteUniform( x.length, -100, 100 );
var labels = [ 'x', 'y' ];
var out = zip2views( [ x, y ], labels );
// returns [...]