"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo encontrar de manera eficiente un objeto específico en objetos JavaScript anidados?

¿Cómo encontrar de manera eficiente un objeto específico en objetos JavaScript anidados?

Publicado el 2024-11-09
Navegar:983

How to Efficiently Find a Specific Object in Nested JavaScript Objects?

Iterar a través de objetos JavaScript anidados

Iterar a través de objetos JavaScript anidados puede ser un desafío, especialmente cuando necesitas recuperar objetos específicos basados ​​en una propiedad valor. Consideremos el siguiente ejemplo:

var cars = {
  label: 'Autos',
  subs: [
    {
      label: 'SUVs',
      subs: []
    },
    {
      label: 'Trucks',
      subs: [
        {
          label: '2 Wheel Drive',
          subs: []
        },
        {
          label: '4 Wheel Drive',
          subs: [
            {
              label: 'Ford',
              subs: []
            },
            {
              label: 'Chevrolet',
              subs: []
            }
          ]
        }
      ]
    },
    {
      label: 'Sedan',
      subs: []
    }
  ]
};

Si queremos recuperar el objeto de la marca "Ford", podemos usar un enfoque recursivo:

const iterate = (obj, identifier) => {
  for (let key in obj) {
    if (obj[key]['label'] === identifier) {
      return obj[key];
    }
    if (typeof obj[key] === 'object' && obj[key] !== null) {
      const result = iterate(obj[key], identifier);
      if (result) {
        return result;
      }
    }
  }
  return null;
};

const fordObject = iterate(cars, 'Ford');

En este ejemplo, la función iterar toma dos parámetros: el objeto a buscar y la cadena de identificación. Itera a través de las propiedades del objeto, verificando si la propiedad de la etiqueta coincide con el identificador. En caso contrario, comprueba si la propiedad es otro objeto y continúa la iteración. Si no se encuentra ningún objeto coincidente, devuelve nulo.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3