«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно найти конкретный объект во вложенных объектах JavaScript?

Как эффективно найти конкретный объект во вложенных объектах JavaScript?

Опубликовано 9 ноября 2024 г.
Просматривать:628

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

Итерация по вложенным объектам JavaScript

Итерация по вложенным объектам JavaScript может быть сложной задачей, особенно если вам нужно получить определенные объекты на основе свойства ценить. Давайте рассмотрим следующий пример:

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

Если мы хотим получить объект для марки «Ford», мы можем использовать рекурсивный подход:

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

В этом примере функция итерации принимает два параметра: объект для поиска и строку идентификатора. Он перебирает свойства объекта, проверяя, соответствует ли свойство метки идентификатору. Если нет, он проверяет, является ли свойство другим объектом, и продолжает итерацию. Если соответствующий объект не найден, возвращается значение null.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3