@@ -18,7 +18,7 @@ limitations under the License.
1818
1919-->
2020
21- # Flatten Array
21+ # flattenArray
2222
2323> Flatten an array.
2424
@@ -32,7 +32,7 @@ var flattenArray = require( '@stdlib/utils/flatten-array' );
3232
3333#### flattenArray( arr\[ , options] )
3434
35- Flattens an ` array ` .
35+ Flattens an array.
3636
3737``` javascript
3838var arr = [ 1 , [2 , [3 , [4 , [ 5 ], 6 ], 7 ], 8 ], 9 ];
@@ -44,7 +44,7 @@ var out = flattenArray( arr );
4444The function accepts the following ` options ` :
4545
4646- ** depth** : maximum depth to flatten.
47- - ** copy** : ` boolean ` indicating whether to deep [ copy] [ @stdlib/utils/copy ] ` array ` elements. Default: ` false ` .
47+ - ** copy** : ` boolean ` indicating whether to deep [ copy] [ @stdlib/utils/copy ] array elements. Default: ` false ` .
4848
4949To flatten to a specified depth, set the ` depth ` option.
5050
@@ -60,7 +60,7 @@ var bool = ( arr[1][1][1] === out[3] );
6060// returns true
6161```
6262
63- To deep [ copy] [ @stdlib/utils/copy ] ` array ` elements, set the ` copy ` option to ` true ` .
63+ To deep [ copy] [ @stdlib/utils/copy ] array elements, set the ` copy ` option to ` true ` .
6464
6565``` javascript
6666var arr = [ 1 , [2 , [3 , [4 , [ 5 ], 6 ], 7 ], 8 ], 9 ];
@@ -77,7 +77,7 @@ var bool = ( arr[1][1][1] === out[3] );
7777
7878#### flattenArray.factory( dims\[ , options] )
7979
80- Returns a ` function ` optimized for flattening ` arrays ` having specified dimensions.
80+ Returns a ` function ` optimized for flattening arrays having specified dimensions.
8181
8282``` javascript
8383var flatten = flattenArray .factory ( [ 3 , 3 ] );
@@ -103,9 +103,9 @@ out = flatten( arr );
103103
104104The function accepts the following ` options ` :
105105
106- - ** copy** : ` boolean ` indicating whether to deep [ copy] [ @stdlib/utils/copy ] ` array ` elements. Default: ` false ` .
106+ - ** copy** : ` boolean ` indicating whether to deep [ copy] [ @stdlib/utils/copy ] array elements. Default: ` false ` .
107107
108- To deep [ copy] [ @stdlib/utils/copy ] ` array ` elements, set the ` copy ` option to ` true ` .
108+ To deep [ copy] [ @stdlib/utils/copy ] array elements, set the ` copy ` option to ` true ` .
109109
110110<!-- eslint-disable object-curly-newline -->
111111
@@ -136,6 +136,7 @@ var bool = ( arr[1][1] === out[4] );
136136## Notes
137137
138138- A flatten ` function ` returned by the factory method does ** not** validate that input ` arrays ` actually have the specified dimensions.
139+ - The ` factory ` method uses code evaluation, which may be problematic in browser contexts enforcing a strict [ content security policy] [ mdn-csp ] (CSP).
139140
140141</section >
141142
@@ -152,50 +153,48 @@ var bool = ( arr[1][1] === out[4] );
152153``` javascript
153154var flattenArray = require ( ' @stdlib/utils/flatten-array' );
154155
155- var xStride;
156- var yStride;
157- var zStride;
158- var bool;
159- var tmp1;
160- var tmp2;
161- var arr;
162- var val;
163- var out;
164- var N ;
165- var M ;
166- var L ;
167- var i;
168- var j;
169- var k;
170-
171- N = 1000 ;
172- M = 100 ;
173- L = 10 ;
174-
175- // Create an NxMxL (3D) array...
176- arr = new Array ( N );
177- for ( i = 0 ; i < N ; i++ ) {
178- tmp1 = new Array ( M );
179- for ( j = 0 ; j < M ; j++ ) {
180- tmp2 = new Array ( L );
181- for ( k = 0 ; k < L ; k++ ) {
182- tmp2[ k ] = (M * L * i) + (j* L ) + k + 1 ;
156+ function tensor ( N , M , L ) {
157+ var tmp1;
158+ var tmp2;
159+ var out;
160+ var i;
161+ var j;
162+ var k;
163+
164+ out = [];
165+ for ( i = 0 ; i < N ; i++ ) {
166+ tmp1 = [];
167+ for ( j = 0 ; j < M ; j++ ) {
168+ tmp2 = [];
169+ for ( k = 0 ; k < L ; k++ ) {
170+ tmp2 .push ( (M * L * i) + (j* L ) + k + 1 );
171+ }
172+ tmp1 .push ( tmp2 );
183173 }
184- tmp1[ j ] = tmp2 ;
174+ out . push ( tmp1 ) ;
185175 }
186- arr[ i ] = tmp1 ;
176+ return out ;
187177}
188- // Create a flattened (strided) array:
189- out = flattenArray ( arr );
190-
191- // To access the arr[4][20][2] element...
192- xStride = M * L ;
193- yStride = L ;
194- zStride = 1 ;
195- val = out[ (4 * xStride) + (20 * yStride) + (2 * zStride) ];
178+
179+ // Define array dimensions:
180+ var N = 1000 ;
181+ var M = 100 ;
182+ var L = 10 ;
183+
184+ // Create a 3-dimensional nested array:
185+ var data = tensor ( N , M , L );
186+
187+ // Create a flattened (strided) array from a 3-dimensional nested array:
188+ var arr = flattenArray ( data );
189+
190+ // To access the data[4][20][2] element...
191+ var xStride = M * L ;
192+ var yStride = L ;
193+ var zStride = 1 ;
194+ var v = arr[ (4 * xStride) + (20 * yStride) + (2 * zStride) ];
196195// returns 4203
197196
198- bool = ( arr [4 ][20 ][2 ] === val );
197+ var bool = ( data [4 ][20 ][2 ] === v );
199198// returns true
200199```
201200
@@ -223,6 +222,8 @@ bool = ( arr[4][20][2] === val );
223222
224223[ @stdlib/utils/copy ] : https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/utils/copy
225224
225+ [ mdn-csp ] : https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
226+
226227<!-- <related-links> -->
227228
228229[ @stdlib/utils/flatten-object ] : https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/utils/flatten-object
0 commit comments