1- export function createArray1d ( values , columns , initValue ) {
2- if ( values && values . length ) {
3- columns = columns > 0 ? columns : values . length ;
4- }
5- if ( columns < 1 ) throw Error ( 'Columns not a number!' ) ;
6- const arr = new Array ( columns ) ;
7- let c = 0 ;
8- if ( values ) {
9- const itr = Math . min ( values . length , columns ) ;
10- for ( ; c < itr ; c ++ ) {
11- arr [ c ] = values [ c ] ;
12- }
13- }
14- for ( ; c < columns ; c ++ ) {
15- arr [ c ] = initValue ;
16- }
17- return arr ;
18- }
19-
20- export function createArray2d ( values , columns , rows , initValue ) {
21- if ( values && values . length ) {
22- rows = Math . ceil ( values . length / columns ) ;
23- }
24- if ( Number . isFinite ( values ) ) {
25- rows = values ;
26- values = null ;
27- }
28- if ( columns < 1 ) throw Error ( 'Columns not a number!' ) ;
29- rows = rows || 1 ;
30- const arr = new Array ( rows ) ;
31- const len = rows * columns ;
32- let i = 0 ;
33- let r = - 1 ;
34- if ( values ) {
35- const itr = Math . min ( len , values . length ) ;
36- for ( ; i < itr ; i ++ ) {
37- const c = i % columns ;
38- if ( c === 0 ) {
39- r ++ ;
40- arr [ r ] = new Array ( columns ) ;
41- }
42- arr [ r ] [ c ] = values [ i ] ;
43- }
44- }
45- for ( ; i < len ; i ++ ) {
46- const c = i % columns ;
47- if ( c === 0 ) {
48- r ++ ;
49- arr [ r ] = new Array ( columns ) ;
50- }
51- arr [ r ] [ c ] = initValue ;
52- }
53-
54- // for (let r = 0; r < arr.length; r++) {
55- // arr[r] = new Array(columns);
56- // for (let c = 0; c < columns; c++) {
57- // arr[r][c] = values[i++];
58- // }
59- // for (let c = i; c < columns; c++) {
60- // arr[r][c] = initValue;
61- // }
62- // }
63- return arr ;
64- }
65-
661export function assignTo ( arr , cb ) {
672 if ( Array . isArray ( arr [ 0 ] ) ) {
683 for ( let r = 0 ; r < arr . length ; r ++ ) {
@@ -80,13 +15,17 @@ export function assignTo(arr, cb) {
8015export function copyTo ( arr , values ) {
8116 if ( Array . isArray ( arr [ 0 ] ) ) {
8217 let i = 0 ;
83- for ( let r = 0 ; r < arr . length ; r ++ ) {
84- for ( let c = 0 ; c < arr [ 0 ] . length && i < values . length ; c ++ ) {
18+ const ncols = arr [ 0 ] . length ;
19+ const nrows = arr . length ;
20+ for ( let r = 0 ; r < nrows ; r ++ ) {
21+ for ( let c = 0 ; c < ncols ; c ++ ) {
22+ if ( i >= values . length ) return ;
8523 arr [ r ] [ c ] = values [ i ++ ] ;
8624 }
8725 }
8826 } else {
89- for ( let c = 0 ; c < arr . length && c < values . length ; c ++ ) {
27+ const l = Math . min ( arr . length , values . length ) ;
28+ for ( let c = 0 ; c < l ; c ++ ) {
9029 arr [ c ] = values [ c ] ;
9130 }
9231 }
@@ -157,3 +96,47 @@ export const flatten = (inpArr) => {
15796 }
15897 return arr ;
15998} ;
99+
100+ export function createArray1d ( values , columns , initValue ) {
101+ if ( values ) {
102+ columns = columns > 0 ? columns : values . length ;
103+ const arr = new Array ( columns ) ;
104+ for ( let c = 0 ; c < arr . length ; c ++ ) {
105+ arr [ c ] = c < values . length ? values [ c ] : initValue ;
106+ }
107+ return arr ;
108+ }
109+ if ( columns < 1 ) throw Error ( 'Columns not a number!' ) ;
110+
111+ return new Array ( columns ) . fill ( initValue ) ;
112+ }
113+
114+ export function createArray2d ( values , columns , rows , initValue ) {
115+ if ( values ) {
116+ if ( values . length ) {
117+ rows = Math . ceil ( values . length / columns ) ;
118+ } else if ( Number . isFinite ( values ) ) {
119+ rows = values ;
120+ values = null ;
121+ }
122+ } else {
123+ rows = rows || 1 ;
124+ }
125+ if ( columns < 1 ) throw Error ( 'Columns not a number!' ) ;
126+ const arr = new Array ( rows ) ;
127+ if ( values ) {
128+ let k = 0 ;
129+ for ( let i = 0 ; i < arr . length ; i ++ ) {
130+ arr [ i ] = new Array ( columns ) ;
131+ for ( let j = 0 ; j < columns ; j ++ ) {
132+ arr [ i ] [ j ] = k < values . length ? values [ k ++ ] : initValue ;
133+ }
134+ }
135+ } else {
136+ for ( let i = 0 ; i < arr . length ; i ++ ) {
137+ arr [ i ] = new Array ( columns ) ;
138+ if ( initValue !== undefined ) arr [ i ] . fill ( initValue ) ;
139+ }
140+ }
141+ return arr ;
142+ }
0 commit comments