is-equal ![Version Badge](https://camo.githubusercontent.com/3c435aeb5c489a4680f8be8c913ec6b5e16a1c2efd68173553965379c0de52ca/68747470733a2f2f76657273696f6e626164672e65732f696e73706563742d6a732f69732d657175616c2e737667)
Are these two values conceptually equal?
Example
var isEqual = require('is-equal');
var assert = require('assert');
var primitives = [true, false, undefined, 42, 'foo'];
primitives.forEach(function (primitive) {
assert.equal(isEqual(primitive, primitive), true);
});
assert.equal(isEqual(/a/g, /a/g));
assert.equal(isEqual(/a/g, new RegExp('a', 'g')));
assert.equal(isEqual({ a: 2 }, { a: 2 }), true);
assert.equal(isEqual([1, [2, 3], 4], [1, [2, 3], 4]), true);
var timestamp = Date.now();
assert.equal(isEqual(new Date(timestamp), new Date(timestamp)), true);
Want to know why two values are not equal?
Will return an empty string if isEqual
would return true
- otherwise will return a non-empty string that hopefully explains the reasoning.
var whyNotEqual = require('is-equal/why');
assert.equal(whyNotEqual(1, 1), '');
assert.equal(
whyNotEqual({ a: 1 }, { a: 2 }),
'value at key "a" differs: numbers are different: 1 !== 2'
);
Tests
Simply clone the repo, npm install
, and run npm test