Skip to content

Instantly share code, notes, and snippets.

@motephyr
Last active December 8, 2019 15:22
Show Gist options
  • Save motephyr/a8131a1e4fcaed234b037a3df57df2c2 to your computer and use it in GitHub Desktop.
Save motephyr/a8131a1e4fcaed234b037a3df57df2c2 to your computer and use it in GitHub Desktop.
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