123456789101112131415161718192021222324252627282930313233343536 |
- var hasOwn = require('./hasOwn');
- var every = require('./every');
- var isObject = require('../lang/isObject');
- function defaultCompare(a, b) {
- return a === b;
- }
- // Makes a function to compare the object values from the specified compare
- // operation callback.
- function makeCompare(callback) {
- return function(value, key) {
- return hasOwn(this, key) && callback(value, this[key]);
- };
- }
- function checkProperties(value, key) {
- return hasOwn(this, key);
- }
- /**
- * Checks if two objects have the same keys and values.
- */
- function equals(a, b, callback) {
- callback = callback || defaultCompare;
- if (!isObject(a) || !isObject(b)) {
- return callback(a, b);
- }
- return (every(a, makeCompare(callback), b) &&
- every(b, checkProperties, a));
- }
- module.exports = equals;
|