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"))