Package detail

nano-equal

smelukov6kMIT2.0.2

Ultra fast and compact implementation of deep equal without any production dependencies.

equal, deep equal

readme

Build Status npm version

NanoEqual

Ultra fast and compact implementation of deep equal without any production dependencies.

Usage

npm install nano-equal --save
var nanoEqual = require('nano-equal');

if (nanoEqual(a, b)) {
    //....
}

What is that?

This is a compact and fast implementation of deep equal.

Deep equal is an algorithm that comparing two values. If the values are a scalar (string, bool, number), then comparing will be performed thru === operator.

If the values are an object (object, array, function), then comparing will be performed recursively.

Following of the object properties is not important:

var a = {prop1: 'some', prop2: 'some'};
var b = {prop2: 'some', prop1: 'some'};

nanoEqual(a, b); // true

But following of the array elements is important:

var a = [1, 2, 3];
var b = [3, 2, 1];

nanoEqual(a, b); // false

NaN values and some types of recursion are supported.

Benchmark

The list below is showing the performance comparison nano-equal with other libs:

nanoEqual: 1362.813ms
underscore: 3791.308ms
lodash: 7830.107ms
nodejs: 8272.956ms

changelog

2.0.2 (November 16, 2017)

  • fixed issue with different object keys length (#4)

2.0.1 (August 24, 2017)

  • fixed array-like comparison

2.0.0 (August 24, 2017)

  • performance improvements
  • array recursion check
  • removed gulp and webpack

1.0.2 (March 10, 2016)

  • fix recursion object check

1.0.1 (March 10, 2016)

  • micro optimization

1.0.0 (March 10, 2016)

  • initial release