Skip to content

Commit 0f29114

Browse files
authored
Added Sanitize array function
Added a function to sanitize the array based on the given schema object. Schema is fully dynamic and any key pairs can be added as long as datatypes are correct.
1 parent 0353d83 commit 0f29114

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

index.js

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
182236
export {
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

Comments
 (0)