123456789101112131415161718192021222324252627282930313233343536 |
- function valueOf(obj) {
- return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);
- }
- function valueEqual(a, b) {
- // Test for strict equality first.
- if (a === b) return true;
- // Otherwise, if either of them == null they are not equal.
- if (a == null || b == null) return false;
- if (Array.isArray(a)) {
- return (
- Array.isArray(b) &&
- a.length === b.length &&
- a.every(function(item, index) {
- return valueEqual(item, b[index]);
- })
- );
- }
- if (typeof a === 'object' || typeof b === 'object') {
- var aValue = valueOf(a);
- var bValue = valueOf(b);
- if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);
- return Object.keys(Object.assign({}, a, b)).every(function(key) {
- return valueEqual(a[key], b[key]);
- });
- }
- return false;
- }
- export default valueEqual;
|