Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

222
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda