Skip to content

Instantly share code, notes, and snippets.

@TunaYagci
Created July 6, 2018 11:13
Show Gist options
  • Save TunaYagci/45ffbd09c849fe50109354ec3ccc1ef0 to your computer and use it in GitHub Desktop.
Save TunaYagci/45ffbd09c849fe50109354ec3ccc1ef0 to your computer and use it in GitHub Desktop.
replace value by key in object
const deepReplace = (objectToBeReplaced, replaceMap) => {
if (!objectToBeReplaced) {
return;
}
if (!replaceMap || replaceMap.size < 1) {
return objectToBeReplaced;
}
if (typeof objectToBeReplaced !== "object") {
throw new DOMException("1st parameter must be a type of Object!");
}
const replace = (params) => {
return Object.entries(params)
.map(entry => {
if (Array.isArray(entry[1])) {
entry[1] = entry[1].map(replace);
}
else if (typeof entry[1] === "object") {
entry[1] = replace(entry[1]);
} else {
if (replaceMap.has(entry[0])) {
entry[1] = replaceMap.get(entry[0]);
}
}
return entry;
})
.reduce((memo, [key, value]) => ({...memo, [key]: value}), {});
};
return replace(objectToBeReplaced);
};
export {deepReplace}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment