Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

218
Views
Fetching inner nested keys or values

So let say we have a JSON object like so:

{
    "blacksmith": {
        "sword": {
            "name": "Altar of skies",
            "description": "A really powerful sword",
            "rarity": 5
        },
        "bow": {
            "name": "Hell's string",
            "description": "A really powerful bow",
            "rarity": 4
        },
        "spear": {
            "name": "Heart piercer",
            "description": "A really powerful spear",
            "rarity": 5
        }
    },
    "merchant": {
        "sword": {
            "name": "Wind's wand",
            "description": "A really powerful sword",
            "rarity": 5
        },
        "bow": {
            "name": "Heaven's string",
            "description": "A really powerful bow",
            "rarity": 4
        },
        "spear": {
            "name": "Digger",
            "description": "A really powerful spear",
            "rarity": 5
        }
    }
}

And the user gives me a string, If the string is "blacksmith" or "merchant" I want to return all the stuff they sell but if it's only a specific weapon name like "Altar of skies" it'd return only that weapon's information.

For example:

User string: "merchant"

Returns:

    "merchant": {
        "sword": {
            "name": "Wind's wand",
            "description": "A really powerful sword",
            "rarity": 5
        },
        "bow": {
            "name": "Heaven's string",
            "description": "A really powerful bow",
            "rarity": 4
        },
        "spear": {
            "name": "Digger",
            "description": "A really powerful spear",
            "rarity": 5
        }
    }

User string: "Altar of skies"

Returns:

{
  "name": "Altar of skies",
  "description": "A really powerful sword",
  "rarity": 5
}
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

let d = { "blacksmith": { "sword": { "name": "Altar of skies", "description": "A really powerful sword", "rarity": 5 }, "bow": { "name": "Hell's string", "description": "A really powerful bow", "rarity": 4 }, "spear": { "name": "Heart piercer", "description": "A really powerful spear", "rarity": 5 } }, "merchant": { "sword": { "name": "Wind's wand", "description": "A really powerful sword", "rarity": 5 }, "bow": { "name": "Heaven's string", "description": "A really powerful bow", "rarity": 4 }, "spear": { "name": "Digger", "description": "A really powerful spear", "rarity": 5 } } }

function getTarget(data, userString) {
  if (Object.keys(data).includes(userString)) {
    return data[userString]
  }  
  return Object.keys(data)
    .reduce((acc, key) => [...acc, Object.values(data[key])], [])
    .reduce((acc, itms) => [...acc, ...itms], [])
    .filter(({name}) => name == userString)
}

console.log(

getTarget(d, 'Altar of skies')

)

console.log(

getTarget(d, 'merchant')

)

about 4 years ago · Juan Pablo Isaza Report

0

Using Object.keys and Array.includes to match with top-level keys

Uisng Object.values() to extract values out of top level objects, flatMap to flat all objects inside top level objects, and find in the flattern objects

const data = {"blacksmith":{"sword":{"name":"Altar of skies","description":"A really powerful sword","rarity":5},"bow":{"name":"Hell's string","description":"A really powerful bow","rarity":4},"spear":{"name":"Heart piercer","description":"A really powerful spear","rarity":5}},"merchant":{"sword":{"name":"Wind's wand","description":"A really powerful sword","rarity":5},"bow":{"name":"Heaven's string","description":"A really powerful bow","rarity":4},"spear":{"name":"Digger","description":"A really powerful spear","rarity":5}}};

function findWeapon(data, userInput){
    if(Object.keys(data).includes(userInput)){
        return data[userInput]; //  res = { [userInput]: data[userInput] };
    }
    return Object.values(data)
            .flatMap(o => Object.values(o))
            .find(o => o.name===userInput);
}

console.log(findWeapon(data, "Altar of skies"));
console.log(findWeapon(data, 'merchant'));
.as-console-wrapper { max-height: 100% !important; top: 0 }

about 4 years ago · Juan Pablo Isaza Report

0

you can find elements with nested element by the below code.

var obj={
    "blacksmith": {
        "sword": {
            "name": "Altar of skies",
            "description": "A really powerful sword",
            "rarity": 5
        },
        "bow": {
            "name": "Hell's string",
            "description": "A really powerful bow",
            "rarity": 4
        },
        "spear": {
            "name": "Heart piercer",
            "description": "A really powerful spear",
            "rarity": 5
        }
    },
    "merchant": {
        "sword": {
            "name": "Wind's wand",
            "description": "A really powerful sword",
            "rarity": 5
        },
        "bow": {
            "name": "Heaven's string",
            "description": "A really powerful bow",
            "rarity": 4
        },
        "spear": {
            "name": "Digger",
            "description": "A really powerful spear",
            "rarity": 5
        }
    }
}
function findObj(inp){
  if(obj[inp]){
    console.log(obj[inp]);
  }
  else{
     var keys=Object.keys(obj);
     flag=0;
     for(var i=0;i<keys.length;i++){
         if(flag==1){
           break;
         }
         var innerObj=obj[keys[i]];
         var innerKeys=Object.keys(innerObj);
          for(var j=0;j<innerKeys.length;j++){
          if(innerKeys[j]==inp){
           console.log(innerObj[innerKeys[j]]);
           break;
          }
          var ob=innerObj[innerKeys[j]];
          if(ob.name==inp){
             console.log(ob);
             flag=1;
             break;
          }
       }
     }
  }
}
findObj("blacksmith");
findObj("Altar of skies");

strong text

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!