Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/writetome51/is-match
A substitute for using === operator. Useful when arrays don't have to be identical via === to be deemed a match. They must only have identical content.
https://github.com/writetome51/is-match
array comparison identical javascript match matching
Last synced: 11 days ago
JSON representation
A substitute for using === operator. Useful when arrays don't have to be identical via === to be deemed a match. They must only have identical content.
- Host: GitHub
- URL: https://github.com/writetome51/is-match
- Owner: writetome51
- License: mit
- Created: 2021-03-25T06:59:30.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2021-03-25T20:58:51.000Z (over 3 years ago)
- Last Synced: 2024-08-08T15:45:00.366Z (3 months ago)
- Topics: array, comparison, identical, javascript, match, matching
- Language: JavaScript
- Homepage:
- Size: 21.5 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# isMatch(
item1: any,
item2: any
): boolean
Works for any data type, but really intended for array comparison.
The algorithm:
```
function isMatch(item1, item2) {
if (item1 === item2) return true;if (isArray(item1) && isArray(item2) && (item1.length === item2.length)) {
for (let i = 0, length = item1.length; i < length; ++i) {
if (not(isMatch( item1[i], item2[i] ))) return false;
}
return true;
}
else return false;
}
```## Examples
```js
isMatch([], []); // trueisMatch(['a', 'b'], ['a', 'b']); // true
isMatch(['a', 'b'], ['a', 'b', 'c']); // false
// Elements must be in matching order to match:
isMatch(['a', 'b', 'c'], ['c', 'b', 'a']); // falseisMatch([1, 2, [3]], [1, 2, [3]]); // true
let obj = {prop: 1};
isMatch([obj], [{prop:1}]); // falselet obj2 = obj;
isMatch([obj], [obj2]); // true// Behaves the same as === operator for primitive types and non-array objects:
isMatch('', ''); // true
isMatch('0', '0'); // true
isMatch('0', 0); // false
isMatch('00', '01'); // false
isMatch(Infinity, Infinity); // true
isMatch(undefined, undefined); // true
let obj = {prop: 1};
isMatch(obj, {prop:1}); // falselet obj2 = obj;
isMatch(obj, obj2); // true
```## Installation
`npm i @writetome51/is-match`## Loading
```js
import {isMatch} from '@writetome51/is-match';
```