≡ isEq.js -- deep compare objects and arrays in JavaScript
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Muthu Kumar cdfa701470 [iseq] unhandleable input falls back to strict equality 6 years ago
spec [tests] Added basic unit tests (wip) 6 years ago
umd [build] 6 years ago
.gitignore Several fixes, added build script 7 years ago
LICENSE Create LICENSE 7 years ago
README.md [iseq] unhandleable input falls back to strict equality 6 years ago
build.sh [build] More sensible temp files 6 years ago
isEq.js [iseq] unhandleable input falls back to strict equality 6 years ago
package-lock.json [tests] Added basic unit tests (wip) 6 years ago
package.json [iseq] unhandleable input falls back to strict equality 6 years ago

README.md

isEq -- Deep-compare objects

isEq is a very tiny module that deep compares objects or arrays.

Although its intention is deep comparison, isEq can compare several datatypes.

Supports

Datatype Support
Number
String
Boolean
Object
Array
Cyclic Object/Array
Regexp
Function
Symbol

Note: functions and symbols are compared by identity. Regexp is stringified before comparison. Unhandleable inputs fall back to strict equality (===)

Installation

Node:

npm install --save @codefeathers/iseq

In the browser:

<script src="https://unpkg.com/@codefeathers/iseq">

Usage

isEq(<sourceObject>, <compareObject>, [comparisonKeys])

where if comparison keys are not given, compareObject is compared against all keys of sourceObject.

Example

So you want to filter all the entities in Steins;Gate that have the property isEvil: true.

var entities = [
	{
		name: 'Future Gadget Laboratory',
		isEvil: false,
		after: 'Disrupting the status quo',
		"known-members": [
			{ name: 'Okabe Rintarou', gender: 'Male', occupation: 'University student' },
			{ name: 'Mayuri Shiina', gender: 'Female', occupation: 'Maid at May Queen' },
			{ name: 'Itaru Hashida', gender: 'Male', occupation: 'Hacker' },
		],
	},
	{
		name: 'SERN',
		isEvil: true,
		after: 'IBN 5100',
		"known-members": [
			{ name: 'Yuugo Tennouji', gender: 'Male', occupation: 'CRT mechanic' },
			{ name: 'Moeka Kiryū', gender: 'Female', occupation: 'Part-time editor' },
		],
	},
	{
		name: 'Strategic Focus',
		isEvil: true,
		after: 'Time travel',
		"known-members": [
			{ name: 'Alexis Leskinen', gender: 'Male', occupation: 'Professor' },
		],
	},
]

const evilEntities = entities.filter(eachEntity => isEq(eachEntity, { isEvil: true }, ['isEvil']));



Written by @MKRhere