Which kind of Collection (Map, Set, WeakMap, WeakSet) is this JavaScript value? Works cross-realm, without instanceof
, and despite Symbol.toStringTag.
var whichCollection = require('which-collection'); var assert = require('assert'); assert.equal(false, whichCollection(undefined)); assert.equal(false, whichCollection(null)); assert.equal(false, whichCollection(false)); assert.equal(false, whichCollection(true)); assert.equal(false, whichCollection([])); assert.equal(false, whichCollection({})); assert.equal(false, whichCollection(/a/g)); assert.equal(false, whichCollection(new RegExp('a', 'g'))); assert.equal(false, whichCollection(new Date())); assert.equal(false, whichCollection(42)); assert.equal(false, whichCollection(NaN)); assert.equal(false, whichCollection(Infinity)); assert.equal(false, whichCollection(new Number(42))); assert.equal(false, whichCollection(42n)); assert.equal(false, whichCollection(Object(42n))); assert.equal(false, whichCollection('foo')); assert.equal(false, whichCollection(Object('foo'))); assert.equal(false, whichCollection(function () {})); assert.equal(false, whichCollection(function* () {})); assert.equal(false, whichCollection(x => x * x)); assert.equal(false, whichCollection([])); assert.equal('Map', whichCollection(new Map())); assert.equal('Set', whichCollection(new Set())); assert.equal('WeakMap', whichCollection(new WeakMap())); assert.equal('WeakSet', whichCollection(new WeakSet()));
Simply clone the repo, npm install
, and run npm test