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>
|
<summary>View contents</summary>
|
||||||
|
|
||||||
* [`cleanObj`](#cleanobj)
|
* [`cleanObj`](#cleanobj)
|
||||||
|
* [`equals`](#equals-)
|
||||||
* [`functions`](#functions)
|
* [`functions`](#functions)
|
||||||
* [`invertKeyValues`](#invertkeyvalues)
|
* [`invertKeyValues`](#invertkeyvalues)
|
||||||
* [`lowercaseKeys`](#lowercasekeys)
|
* [`lowercaseKeys`](#lowercasekeys)
|
||||||
@ -3998,6 +3999,39 @@ cleanObj(testObj, ['a'], 'children'); // { a: 1, children : { a: 1}}
|
|||||||
<br>[⬆ Back to top](#table-of-contents)
|
<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
|
### functions
|
||||||
|
|
||||||
Returns an array of function property names from own (and optionally inherited) enumerable properties of an object.
|
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
|
```js
|
||||||
const equals = (a, b) => {
|
const equals = (a, b) => {
|
||||||
if (a === b) return true;
|
if (a === b) return true;
|
||||||
if (a instanceof Date && b instanceof Date)
|
if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime();
|
||||||
return a.getTime() === b.getTime();
|
if (!a || !b || (typeof a != 'object' && typeof b !== 'object')) return a === b;
|
||||||
if (!a || !b || (typeof a != 'object' && typeof b !== 'object'))
|
if (a === null || a === undefined || b === null || b === undefined) return false;
|
||||||
return a === b;
|
|
||||||
if (a === null || a === undefined || b === null || b === undefined)
|
|
||||||
return false;
|
|
||||||
if (a.prototype !== b.prototype) return false;
|
if (a.prototype !== b.prototype) return false;
|
||||||
let keys = Object.keys(a);
|
let keys = Object.keys(a);
|
||||||
if (keys.length !== Object.keys(b).length) return false;
|
if (keys.length !== Object.keys(b).length) return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user