JSFiddle - React, Tailwind, and code Playground
by Artur Maizelev
JavaScript
const deepFind = (obj, path) => {
const paths = path.split(".");
let current = obj;
let isArray = false;
let skip = false;
paths.map((path,i) => {
if (path === "[]") {
isArray = true;
skip = true;
}
if (current[paths[i]] === undefined && !isArray) {
return "";
} else if(!skip){
if(isArray) {
current = current.map((item) => item[paths[i]]).toString();
} else {
current = current[paths[i]];
}
}else{
skip = false;
}
})
return current;
};
const data = {
domains:[
{
name:"a"
},
{
name:"b"
}
],
extensions:{
ext:"23423"
},
x:"aaaaa"
}
console.log("deep nested array",deepFind(data, "domains.[].name"))
console.log("deep nested object",deepFind(data, "extensions.ext"))
console.log("regular field",deepFind(data, "x"))