deep-equal-in-any-order

chai plugin to match objects and arrays deep equality with arrays (including nested ones) being in any order

Usage no npm install needed!

<script type="module">
  import deepEqualInAnyOrder from 'https://cdn.skypack.dev/deep-equal-in-any-order';
</script>

README

deep-equal-in-any-order

MIT License Build Status

NPM status

Chai plugin to match objects and arrays deep equality with arrays (including nested ones) being in any order.

It works in similar way as deep.equal but it doesn't checks the arrays order (at any level of nested objects and arrays). The array elements can be any JS entity (boolean, null, number, string, object, array...).

install

npm i --save deep-equal-in-any-order

or

yarn add deep-equal-in-any-order

usage

const deepEqualInAnyOrder = require('deep-equal-in-any-order');
const chai = require('chai');

chai.use(deepEqualInAnyOrder);

const { expect } = chai;

expect([1, 2]).to.deep.equalInAnyOrder([2, 1]);
expect([1, 2]).to.not.deep.equalInAnyOrder([2, 1, 3]);
expect({ foo: [1, 2], bar: [4, 89, 22] }).to.deep.equalInAnyOrder({ foo: [2, 1], bar: [4, 22, 89] });
expect({ foo: ['foo-1', 'foo-2', [1, 2], null ] }).to.deep.equalInAnyOrder({ foo: [null, [1, 2], 'foo-1', 'foo-2'] });
expect({ foo: [1, 2], bar: { baz: ['a', 'b', { lorem: [5, 6] }] } }).to.deep.equalInAnyOrder({ foo: [2, 1], bar: { baz: ['b', 'a', { lorem: [6, 5] }] } });