$ npm install only-shallow
If deeper
and deepest
are
assert.deepEqual()
's strict East Coast siblings with engineering backgrounds,
only-shallow
is their laid-back California cousin. only-shallow
is a
library for structurally comparing JavaScript objects. It supports recursive /
cyclical data structures, is written to avoid try / catch / throw (for speed),
and has no dependencies. It's not particularly strict about matching types.
It's more of a duck squeezer.
It has some optimizations but stresses correctness over raw speed. Unlike
deepest
, it has no native dependencies, so you can use it, like, wherever.
If you install Ben Noordhuis's
buffertools into a project
using only-shallow
, it will use that to speed up comparison of Buffers.
The core algorithm is based on those used by Node's assertion library and the implementation of cycle detection in isEqual in Underscore.js.
I like to think the documentation is pretty OK.
only-shallow
has this name because I'm
old.
npm install only-shallow
var deepEqual = require('only-shallow')
if (!deepEqual(obj1, obj2)) console.log("yay! diversity!");
Copied from the source, here are the details of only-shallow
's algorithm:
==
) only for value types (non-objects). This is the
biggest difference between only-shallow
and deeper
/ deepest
.
only-shallow
cares more about shape and contents than type. This step will
also catch functions, with the useful (default) property that only
references to the same function are considered equal. 'Ware the halting
problem!null
is an object – a singleton value object, in fact – so if
either is null
, return a == b. For the purposes of only-shallow
,
loose testing of emptiness makes sense.a
or b
to be an object, if
a
or b
is not an object, they're clearly not the same..getTime()
) than by
lexical value.true
if a
and b
both have no properties.a
and b
have the same number of own properties (which is
what Object.keys()
returns).ISC. Go nuts.
© 2010 - cnpmjs.org x YWFE | Home | YWFE