Сравнение объектов JS

Привет!
Чтобы просто код запускался, то вот, там фигурных скобок парочки не хватало:

function objEqual(a, b) {
  var keysA = Object.keys(a);
  var keysB = Object.keys(b);

  for (var i = 0; i < keysA.length; i++) {
    var key = keysA[i];
    if (key in keysB) {
      return true;
    }
  }
  return keysA.length !== keysB.length;
}

Форматируй код - поможет находить такие ошибки.

А по поводу написания функции для сравнения объектов попробую повдохновляться готовыми решениями (если стоит задача написать свою такую функцию). Вот например обсуждение: How can I determine equality for two JavaScript objects?. Ну, или прикинуть свой алгоритм. В очень упрощенном виде, на основе твоего код:

function objEqual(a, b) {
  var keysA = Object.keys(a);
  var keysB = Object.keys(b);

  if (keysA.length !== keysB.length) {
      return false
  }
    
  for (var i = 0; i < keysA.length; i++) {
    var key = keysA[i];
    if (!keysB.includes(key) || a[key] !== b[key]) {
      return false;
    }
  }

  return true  
}

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

const a = {
  a: 1,
  b: [1, 2, 3]
  c: {
    d: 4,
    e: 'f'
  }
};

const b = {
  a: 1,
  b: [1, 2, 3]
  c: {
    d: 4,
    e: 'k'
  }
}
objEqual(a, b);

И дальше придумывать свои различные простые и сложные объекты a и b и допиливать и рихтовать на их основе функцию сравнения, как-то так.

2 лайка