Last active
December 8, 2019 15:22
-
-
Save motephyr/a8131a1e4fcaed234b037a3df57df2c2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const check = (suma, x, requireValues) => { | |
const deepCheck = y => { | |
return y | |
? Object.entries(y).reduce((sumb, z) => { | |
return check(sumb, z, requireValues); | |
}, {}) | |
: 'Required'; | |
}; | |
let result; | |
if (x[1] && typeof x[1] === 'object') { | |
let value; | |
if (Array.isArray(x[1])) { | |
value = x[1].map(y => { | |
return deepCheck(y); | |
}); | |
} else { | |
value = deepCheck(x[1]); | |
} | |
result = { | |
...suma, | |
[x[0]]: value, | |
}; | |
} else if (!x[1] && requireValues.includes(x[0])) { | |
result = { ...suma, [x[0]]: 'Required' }; | |
} else { | |
result = suma; | |
} | |
return result; | |
}; | |
/** | |
* check input value if it is required | |
* It will be like: | |
* { | |
* @param values all input data. e.g: {"name":"","clientSpecific":false,"effectiveDate":"","defaultResultFamilyId":6,"serviceSchemeId":null,"companyId":null,"checklistSections":[],"draft":false} | |
* @param requireValues all attribute need be check. e.g: ['name'] | |
* @return result e.g: {"name":"Required","checklistSections":[]} | |
*/ | |
const check = (values, requireValues) => { | |
return Object.entries(values).reduce((suma, x) => { | |
let value = null; | |
if (x[1] && typeof x[1] === 'object' && Array.isArray(x[1])) { | |
value = x[1].map(y => { | |
return check(y, requireValues); | |
}); | |
} else if (x[1] && typeof x[1] === 'object') { | |
value = check(x[1], requireValues); | |
} else if (!x[1] && requireValues.includes(x[0])) { | |
value = 'Required'; | |
} | |
return value | |
? { | |
...suma, | |
[x[0]]: value, | |
} | |
: suma; | |
}, {}); | |
}; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment