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

мы можем получить желаемое приветствие (Доброе утро, Добрый день, Добрый вечер) в зависимости от времени суток, добавив .key (утро, день, вечер) после имени объекта.

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

Чтобы получить значение «глубокий», нам потребуется получить доступ к ключу layer1, затем layer2 и последнему layer3.

Объекты также могут иметь вложенные в них массивы, а массивы могут содержать объекты внутри себя.

Чтобы получить значение ключа [obj2], вам нужно написать следующую команду.

Вы можете увидеть, как быстро вы можете потеряться при навигации по нужному ключу, когда начинаете работать с большим объектом.

Решение

Есть простой способ справиться с этой проблемой. который должен перебирать весь объект, пока вы не найдете нужный ключ. Возьмем, к примеру, объект testObj. Мы начинаем с создания функции и убеждаемся, что то, с чем мы имеем дело, на самом деле является объектом, используя оператор if.

Внутри оператора if мы хотели бы различать массивы и объекты, поскольку массив также считается типом данных объекта. Мы делаем это, запуская метод Array.isArray() в другом операторе if. В операторе Array if мы хотели бы запустить цикл по всем элементам в массиве и передать их обратно в нашу функцию searchObject, а также посмотреть, есть ли объект в любом из элементов массива.

Мы добавляем оператор else if, чтобы убедиться, что оператор массива if не является объектом, а затем мы можем создать еще один цикл for для перебора ключей объекта, пока не найдем значение нашего ключа.

Теперь, если мы введем объект testObj, который мы создали ранее, и любой ключ, значение которого мы хотим получить, мы сможем его получить.

Это также работает для массива arrayObj, который мы создали выше.