JSFiddle - React, Tailwind, and code Playground
by neonDog
JavaScript
const isNumeric = function(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
};
const createPatchPathNotExist = function(obj, path, seperator, patch = []) { //Note: it does not create the very last path part
//path = pathToArray(path, seperator);
const pathCopy = [];
let index = 0;
const length = path.length;
if (length === 0) {
return [];
}
while (index < length) {
const currentPath = path[index++];
pathCopy.push(currentPath);
if (obj != null) {
obj = obj[currentPath];
} else {
const value = isNumeric(currentPath) || currentPath === '-' ? [] : {};
patch.push({
op: 'add',
path: pathCopy.slice(0,-1),
value
});
}
}
return patch;
}
const obj = {
'fuck': {
'rabbit': {}
}
};
//console.error(createPatchPathNotExist(obj, ['fuck', 'rabbit', 'sugar', '-']));
//document.body.innerHTML = JSON.stringify(createPatchPathNotExist(obj, ['fuck', 'rabbit', 'sugar', '-']));
document.body.innerHTML = JSON.stringify(createPatchPathNotExist(obj, ['children','1','children','1','children','2','children']));