Поэтому я создал базовый алгоритм в javascript для сравнения объектов любой возможной глубины, хотя вы можете использовать метод JSON.stringyfy(), но это дорого и неэффективно.

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

Пожалуйста, просмотрите приведенный ниже код.

Таким образом, он дает вывод, например:

[ { source_trace: [ 'nested', 0 ],
    source: [ 4.5 ],
    target: 4.5,
    index: 'a' },
  { source_trace: [ 'nested', 0, 'v', 0 ],
    source: 23,
    target: 'a',
    index: 'age' } ]

По сути, мы сравниваем два объекта a_obj и b_obj и даем в качестве входных данных эти функции, и функция возвращает этот выходной массив из 2 объектов, что означает наличие 2 проблем или несоответствие.

source_trace :этодает трассировку произошедшей проблемы, поэтому в «вложенном» ключе следующий массив, поэтому в позиции 0 этого массива. (В случае объекта он сообщит ключ в случае массива он сообщит индекс)

source: показывает, какие существуют значения источника.

target: показывает, какие существуют значения target.

индекс: он сообщает после source_trace точное местонахождение проблемы.

Итак, в нашем коде есть два несоответствия, поэтому он выдает два объекта.

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

Используется DFS (подход поиска в глубину) для поиска элементов, исследующих сначала глубину, а затем дочерние элементы. Здесь в javascript есть два потока для поиска объекта и массива, которые вы можете изменить для своего языка.

Используется стек для поддержания пути трассировки и возврата пути трассировки проблем.

ВЫПОЛНЕНО