@@ -75,19 +75,17 @@ export class Merge {
7575 keys combination.
7676 */
7777 for ( let i = 0 ; i < left_values . length ; i ++ ) {
78-
7978 let left_value = left_values [ i ] ;
80- let right_value = right_values [ i ] ;
81-
82- let right_key_comb = "" ;
83- let left_key_comb = "" ;
79+ let left_key_comb_values = [ ] ;
8480
8581 //get the value in the column index
8682 for ( let j = 0 ; j < this . left_col_index . length ; j ++ ) {
8783 let index = this . left_col_index [ j ] ;
8884
89- left_key_comb += `_ ${ left_value [ index ] } ` ;
85+ left_key_comb_values . push ( left_value [ index ] ) ;
9086 }
87+ //combine into single hashable string
88+ let left_key_comb = left_key_comb_values . join ( '_' ) ;
9189
9290 let self = this ; // assign the this scope to self
9391 //filter out the value that are not the column key
@@ -99,30 +97,38 @@ export class Merge {
9997 //before storing the key combination and the value
10098 //associated with it
10199 if ( utils . __key_in_object ( this . left_key_dict , left_key_comb ) ) {
102- this . left_key_dict [ left_key_comb ] . push ( left_value_filter ) ;
100+ this . left_key_dict [ left_key_comb ] . filters . push ( left_value_filter ) ;
103101 } else {
104- this . left_key_dict [ left_key_comb ] = [ left_value_filter ] ;
102+ this . left_key_dict [ left_key_comb ] = {
103+ filters : [ left_value_filter ] ,
104+ comb_values : left_key_comb_values
105+ } ;
105106 }
106107
107108 }
108109 for ( let i = 0 ; i < right_values . length ; i ++ ) {
109110 let right_value = right_values [ i ] ;
110- let right_key_comb = "" ;
111+ let right_key_comb_values = [ ] ;
111112
112113 for ( let j = 0 ; j < this . right_col_index . length ; j ++ ) {
113114 let index = this . right_col_index [ j ] ;
114115
115- right_key_comb += `_ ${ right_value [ index ] } ` ;
116+ right_key_comb_values . push ( right_value [ index ] ) ;
116117 }
118+ let right_key_comb = right_key_comb_values . join ( '_' ) ;
119+
117120 let self = this ;
118121 let right_value_filter = right_value . filter ( function ( val , index ) {
119122 return ! self . right_col_index . includes ( index ) ;
120123 } ) ;
121124
122125 if ( utils . __key_in_object ( this . right_key_dict , right_key_comb ) ) {
123- this . right_key_dict [ right_key_comb ] . push ( right_value_filter ) ;
126+ this . right_key_dict [ right_key_comb ] . filters . push ( right_value_filter ) ;
124127 } else {
125- this . right_key_dict [ right_key_comb ] = [ right_value_filter ] ;
128+ this . right_key_dict [ right_key_comb ] = {
129+ filters : [ right_value_filter ] ,
130+ comb_values : right_key_comb_values
131+ } ;
126132 }
127133 }
128134
@@ -242,7 +248,8 @@ export class Merge {
242248 } ) ;
243249
244250 if ( utils . __key_in_object ( this . left_key_dict , key ) ) {
245- let left_row = this . left_key_dict [ key ] ;
251+ let left_row = this . left_key_dict [ key ] . filters ;
252+ let key_array = this . left_key_dict [ key ] . comb_values ;
246253
247254
248255 for ( let left_i = 0 ; left_i < left_row . length ; left_i ++ ) {
@@ -251,7 +258,7 @@ export class Merge {
251258
252259 if ( utils . __key_in_object ( this . right_key_dict , key ) ) {
253260
254- let right_row = this . right_key_dict [ key ] ;
261+ let right_row = this . right_key_dict [ key ] . filters ;
255262
256263 for ( let r_i = 0 ; r_i < right_row . length ; r_i ++ ) {
257264
@@ -280,7 +287,8 @@ export class Merge {
280287 }
281288 } else {
282289
283- let right_row = this . right_key_dict [ key ] ;
290+ let right_row = this . right_key_dict [ key ] . filters ;
291+ let key_array = this . right_key_dict [ key ] . comb_values ;
284292
285293 for ( let i = 0 ; i < right_row . length ; i ++ ) {
286294
0 commit comments