"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como encontrar com eficiência um objeto específico em objetos JavaScript aninhados?

Como encontrar com eficiência um objeto específico em objetos JavaScript aninhados?

Publicado em 2024-11-09
Navegar:446

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

Iteração por meio de objetos JavaScript aninhados

Iteração por meio de objetos JavaScript aninhados pode ser desafiadora, especialmente quando você precisa recuperar objetos específicos com base em uma propriedade valor. Vamos considerar o seguinte exemplo:

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: []
    }
  ]
};

Se quisermos recuperar o objeto para a marca "Ford", podemos usar uma abordagem recursiva:

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');

Neste exemplo, a função iterate usa dois parâmetros: o objeto a ser pesquisado e a string identificadora. Ele itera pelas propriedades do objeto, verificando se a propriedade do rótulo corresponde ao identificador. Caso contrário, verifica se a propriedade é outro objeto e continua a iteração. Se nenhum objeto correspondente for encontrado, ele retornará nulo.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3