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

251
Vistas
How to make a method that finds every object by id in angular

Please help,

I want to make a method findChildByIdInShop(shop:any, childId:string) where the shop is any JSON main node that has children with Ids.

Simply, how to make a method that receives JsonNode and its child Id as parameters to find that object using angular.

In my case, I have a shop as a node where I want to find its children's objects (may be nested) by id.

Thanks for your time :)

Back end Service

createShop(id: string): any {
    let shop: any = {};
    shop.id = id;
    shop.departmentList = [];

    let dep1: any = {};
    dep1.id = "d1"
    dep1.name = "my department 1";
    shop.departmentList.push(dep1);

    let dep2: any = {};
    dep2.id = "d2"
    dep2.name = "my department 2";
    dep2.departmentVariationList = [];
    let dep2v1: any = {};
    dep2v1.id = "dep2v1"
    dep2v1.name = "my department variation dep2v1";
    dep2.departmentVariationList.push(dep2v1);
    //shop.departmentList.push(dep2);
    let dep2v2: any = {};
    dep2v2.id = "dep2v2"
    dep2v2.name = "my department variation dep2v2";
    dep2.departmentVariationList.push(dep2v2);
    shop.departmentList.push(dep2);

    let dep3: any = {};
    dep3.id = "d3"
    dep3.name = "my department 3";
    shop.departmentList.push(dep3);

    return shop;
  }

Find Any Child in Shop By its Id method In backend service:

  findChildByIdInShop(shop:any, childId:string):any[]{
   // how to implement this
  }

What I have tried but no result:

findNodeInArray(array:any,id:string):any{
        let node:any;
        for(let i=0; i<array.length; i++){
            let n=array[i];
    
            if(n.id == id) {
              node= n;
              break;
            }
    
            for (const k in n) {
                const v = n[k];
                if(v instanceof Array){
                    this.findNodeInArray(v, id);
                }
            }
        }
        return node;
      }
    
      findNode(parentNode:any,id:string):any {
          if (parentNode instanceof Array) {
              this.findNodeInArray(parentNode, id);
          }
          for (const k in parentNode) {
              const v = parentNode[k];
              if(v instanceof Array){
                  this.findNodeInArray(v, id);
              }
              else { return "Undefined";}
          }
      } 

In Front Component :

        let shop: any = this.backendService.createShop("shop1");
    
        let node: any = this.backendService.findNode(shop, "dep2v2");
        let node2: any = this.backendService.findNode(shop, "dep2v1");
        console.log(JSON.stringify("Shop1 node", node));
        console.log(JSON.stringify("Shop2 node", node2));
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

To implement lodash

https://stackoverflow.com/a/41992126/18762612

import { get } from "lodash";

variable in component

deepObj = {a:{b:{n:{e:100, c: 120}}} 

example of get

constructor(){
 get(deepObj, 'a.b.n.e');
}
about 4 years ago · Juan Pablo Isaza Denunciar

0

Got the result by using the Recursively Traverse an Object method: this link helps me: https://cheatcode.co/tutorials/how-to-recursively-traverse-an-object-with-javascript.

the backendService:

// Verify the object
     isObject(value): any {
        return !!(value && typeof value === "object");
      };

      // Find object in node
      findNestedObject(object: {}, keyToMatch: String, valueToMatch: String): any {
        if (this.isObject(object)) {
          let entries = Object.entries(object);
      
          for (let i = 0; i < entries.length; i += 1) {
            const [objectKey, objectValue] = entries[i];
      
            if (objectKey === keyToMatch && objectValue === valueToMatch) {
              return object;
            }
      
            if (this.isObject(objectValue)) {
              let child = this.findNestedObject(objectValue, keyToMatch, valueToMatch);
      
              if (child !== null) {
                return child;
              }
            }
          }
        }
      
        return null;
      };

and call that method in component as:

 // Find the nested object by passing node, key, & value
        // the this.shop is your backend data or json  
        let  result = this.backendService.findNestedObject(this.shop, "id", "dep2v2");
        console.log("Result: ", result);
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