JSPM

shallow-equal-object

1.1.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 15098
  • Score
    100M100P100Q140234F
  • License MIT

Shallow equal check object.

Package Exports

  • shallow-equal-object

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (shallow-equal-object) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

shallow-equal-object Build Status

Shallow equality check for objects.

Feature

  • Custom equal function
  • Debug mode
    • Why it is not equal?

Install

Install with npm:

npm install shallow-equal-object

Usage

const { shallowEqual } = require("shallow-equal-object");
shallowEqual({ a: 1, b: 2 }, { a: 1, b: 2 }); // => true
shallowEqual({ a: 1, b: 2 }, { a: 1, b: 42 }); // => false
shallowEqual({ a: 1, b: 2 }, { }); // => false

Options

You can pass option object as 3rd arguments.

customEqual: (a:any, b:any) => boolean

assert.ok(shallowEqual(base, { a: 1, b: 2 }, {
    customEqual: (a, b) => {
        return typeof a === "number" && typeof b === "number";
    }
}));
assert.equal(shallowEqual({ a: "string" }, { a: "string" }, {
    customEqual: (a, b) => {
        return typeof a === "number" && typeof b === "number";
    }
}), false);

debug: boolean

Enable debug mode if { debug: true }

Debug mode show helpful log that why that result is false.

it("objectA is not object", () => {
    shallowEqual(null, {}, {
        debug: true,
        console: consoleMock
    });
    assert.strictEqual(logCalls[0], "objectA is not object.");
});
it("objectB is not object", () => {
    shallowEqual({}, null, {
        debug: true,
        console: consoleMock
    });
    assert.strictEqual(logCalls[0], "objectB is not object.");
});
it("object key length is not same", () => {
    shallowEqual({}, { a: 1 }, {
        debug: true,
        console: consoleMock
    });
    assert.strictEqual(logCalls[0], "object key length is not same");
});
it("object value is not equal", () => {
    shallowEqual({ a: 1 }, { a: 2 }, {
        debug: true,
        console: consoleMock
    });
    assert.strictEqual(logCalls[0], "key:a is not equals between A and B.");
});

You can pass console object to { debug: true, console: ConsoleAPI }

Changelog

See Releases page.

Running tests

Install devDependencies and Run npm test:

npm i -d && npm test

Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, please create an issue.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

License

MIT © azu