Practical examples demonstrating the capabilities of Object.isEqual v5.1.0.
Object.isEqual(NaN, NaN); // truetrueUnlike ===, NaN is equal to itself.
Object.isEqual(0, -0); // true (default)
Object.isEqual(0, -0, { strict: true }); // falsetrue / falseObject.isEqual({name:'Alice',age:30},{name:'Alice',age:30}); // truetruevar a={}; a.self=a;
var b={}; b.self=b;
Object.isEqual(a, b); // truetruevar m1=new Map([[{id:1},'val']]);
var m2=new Map([[{id:1},'val']]);
Object.isEqual(m1, m2); // truetrueObject.isEqual(new Set([1,2,3]),new Set([3,2,1])); // truetrueOrder does not matter.
Object.isEqual(new Date('2025-01-01'),new Date('2025-01-01')); // truetrueObject.isEqual(/abc/gi, /abc/gi); // true
Object.isEqual(/abc/gi, /abc/g); // falsetrue / falseObject.isEqual({id:1,ts:100},{id:1,ts:200},{customComparators:{ts:()=>true}}); // truetrueObject.isEqual({a:1,b:'2'},{a:1,b:2},{customComparators:{[Symbol.for('*')]:(x,y)=>x==y}}); // truetruevar obj={get x(){throw new Error('no')},y:1};
Object.isEqual(obj,obj,{safe:true}); // falsefalseExceptions are silently caught.
// Object.isEqual(obj,obj,{safe:false}); // throws ErrorthrowsUse safe:false for debugging.