@@ -179,6 +179,60 @@ function get_element_by_key_value(arr, key, value) {
179179 return arr . filter ( ( item ) => item [ key ] == value ) ;
180180}
181181
182+ /**
183+ * To sanitize the array of objects with respect to the given schema
184+ *
185+ * See exmaple in Readme for better understanding....
186+ *
187+ * @param array arr
188+ * @param object schema { "keyName":"dataType" }
189+ * @return array
190+ *
191+ */
192+
193+ function sanitize_array ( arr , schema ) {
194+ let all_data_types = [ ] ;
195+ let all_keys = [ ] ;
196+
197+ const schema_array = Object . entries ( schema ) ;
198+ schema_array . forEach ( ( type ) => all_data_types . push ( type [ 1 ] ) ) ;
199+
200+ schema_array . forEach ( ( key ) => all_keys . push ( key [ 0 ] ) ) ;
201+
202+ arr . forEach ( ( element ) => {
203+ all_keys . forEach ( ( key , key_index ) => {
204+ if ( `${ typeof ( element [ all_keys [ key_index ] ] ) } ` !== `${ all_data_types [ key_index ] } ` ) {
205+ if ( all_data_types [ key_index ] == 'number' ) {
206+ if ( ! isNaN ( parseInt ( element [ all_keys [ key_index ] ] ) ) ) {
207+ element [ all_keys [ key_index ] ] = parseInt ( element [ all_keys [ key_index ] ] ) ;
208+ } else {
209+ element [ all_keys [ key_index ] ] = 0 ;
210+ }
211+ } else if ( all_data_types [ key_index ] == 'string' ) {
212+ element [ all_keys [ key_index ] ] = `${ element [ all_keys [ key_index ] ] } ` ;
213+ } else if ( all_data_types [ key_index ] == 'boolean' ) {
214+ if ( element [ all_keys [ key_index ] ] == 'true' ) {
215+ element [ all_keys [ key_index ] ] = true ;
216+ } else if ( element [ all_keys [ key_index ] ] == 'false' ) {
217+ element [ all_keys [ key_index ] ] = false ;
218+ } else if ( element [ all_keys [ key_index ] ] == null ) {
219+ element [ all_keys [ key_index ] ] = false ;
220+ } else {
221+ element [ all_keys [ key_index ] ] = true ;
222+ }
223+ } else {
224+ element [ all_keys [ key_index ] ] = null ;
225+ }
226+
227+ }
228+ } )
229+
230+
231+ } )
232+
233+ return arr
234+ }
235+
182236export {
183237 is_array ,
184238 is_num_array ,
@@ -195,4 +249,5 @@ export {
195249 array_slice_sum ,
196250 sort_nums ,
197251 get_element_by_key_value ,
252+ sanitize_array ,
198253} ;
0 commit comments