≡ 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.
 
 

2.0 KiB

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
Regexp
Object
Array
Cyclic Object/Array
Function
Symbol
Blob

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