isEqual.js 655 B

12345678910111213141516171819202122232425262728293031
  1. function isPrimitive(obj) {
  2. return obj !== Object(obj);
  3. }
  4. export function isEqual(first, second) {
  5. if (first === second) {
  6. return true;
  7. }
  8. if (isPrimitive(first) || isPrimitive(second) || typeof first === 'function' || typeof second === 'function') {
  9. return first === second;
  10. }
  11. if (Object.keys(first).length !== Object.keys(second).length) {
  12. return false;
  13. }
  14. for (var _i = 0, _Object$keys = Object.keys(first); _i < _Object$keys.length; _i++) {
  15. var key = _Object$keys[_i];
  16. if (!(key in second)) {
  17. return false;
  18. }
  19. if (!isEqual(first[key], second[key])) {
  20. return false;
  21. }
  22. }
  23. return true;
  24. }