Travis build: 1238
This commit is contained in:
34
README.md
34
README.md
@ -267,6 +267,7 @@ average(1, 2, 3);
|
||||
<summary>View contents</summary>
|
||||
|
||||
* [`cleanObj`](#cleanobj)
|
||||
* [`equals`](#equals-)
|
||||
* [`functions`](#functions)
|
||||
* [`invertKeyValues`](#invertkeyvalues)
|
||||
* [`lowercaseKeys`](#lowercasekeys)
|
||||
@ -3998,6 +3999,39 @@ cleanObj(testObj, ['a'], 'children'); // { a: 1, children : { a: 1}}
|
||||
<br>[⬆ Back to top](#table-of-contents)
|
||||
|
||||
|
||||
### equals 
|
||||
|
||||
Performs a deep comparison between two values to determine if they are equivalent.
|
||||
|
||||
Check if the two values are identical, if they are both `Date` objects with the same time, using `Date.getTime()` or if they are both non-object values with an equivalent value (strict comparison).
|
||||
Check if only one value is `null` or `undefined` or if their prototypes differ.
|
||||
If none of the above conditions are met, use `Object.keys()` to check if both values have the same number of keys, then use `Array.every()` to check if every key in the first value exists in the second one and if they are equivalent by calling this method recursively.
|
||||
|
||||
```js
|
||||
const equals = (a, b) => {
|
||||
if (a === b) return true;
|
||||
if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime();
|
||||
if (!a || !b || (typeof a != 'object' && typeof b !== 'object')) return a === b;
|
||||
if (a === null || a === undefined || b === null || b === undefined) return false;
|
||||
if (a.prototype !== b.prototype) return false;
|
||||
let keys = Object.keys(a);
|
||||
if (keys.length !== Object.keys(b).length) return false;
|
||||
return keys.every(k => equals(a[k], b[k]));
|
||||
};
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>Examples</summary>
|
||||
|
||||
```js
|
||||
equals({ a: [2, { e: 3 }], b: [4], c: 'foo' }, { a: [2, { e: 3 }], b: [4], c: 'foo' }); // true
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
<br>[⬆ Back to top](#table-of-contents)
|
||||
|
||||
|
||||
### functions
|
||||
|
||||
Returns an array of function property names from own (and optionally inherited) enumerable properties of an object.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -9,12 +9,9 @@ If none of the above conditions are met, use `Object.keys()` to check if both va
|
||||
```js
|
||||
const equals = (a, b) => {
|
||||
if (a === b) return true;
|
||||
if (a instanceof Date && b instanceof Date)
|
||||
return a.getTime() === b.getTime();
|
||||
if (!a || !b || (typeof a != 'object' && typeof b !== 'object'))
|
||||
return a === b;
|
||||
if (a === null || a === undefined || b === null || b === undefined)
|
||||
return false;
|
||||
if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime();
|
||||
if (!a || !b || (typeof a != 'object' && typeof b !== 'object')) return a === b;
|
||||
if (a === null || a === undefined || b === null || b === undefined) return false;
|
||||
if (a.prototype !== b.prototype) return false;
|
||||
let keys = Object.keys(a);
|
||||
if (keys.length !== Object.keys(b).length) return false;
|
||||
|
||||
Reference in New Issue
Block a user