@ecreeth/rn-ui
Version:
Highly customizable and theming components for React Native
21 lines (17 loc) • 596 B
JavaScript
const isObject = item => (item && typeof item === 'object' && !Array.isArray(item));
const deepMerge = (object, ...sources) => {
if (!sources.length) return object;
const source = sources.shift();
if (isObject(object) && isObject(source)) {
Object.keys(source).forEach((key) => {
if (isObject(source[key])) {
if (!object[key]) Object.assign(object, { [key]: {} });
deepMerge(object[key], source[key]);
} else {
Object.assign(object, { [key]: source[key] });
}
});
}
return deepMerge(object, ...sources);
};
export default deepMerge;