A datastore to store unique objects in an array.

Usage no npm install needed!

<script type="module">
  import arrayDatastore from '';


A datastore to easily and consistently store unique objects in an array.

You can also specify placeholders for displaying shimmers while awaiting data from an API call.


npm install --save array-datastore



  • constructor.instance(configObject) Create a new instance of the store with an optional configuration object.

  • addUniqueObject() Add an unique object to the store. Objects are unique by their id field, so ensure your objects have that.

  • addUniqueObjects() Add an array unique objects to the store.

  • prependUniqueObject() Add an unique object to front of the store.

  • prependUniqueObjects() Add an array unique objects to front of the store.

  • setBeforeAddProcessor(callbackFunction) Set a function that will be called before any time an object is added to the store.

  • hasObjectById() Check if the store has an object by its id.

  • replaceObject() Replace an existing object or add to the store.

  • deleteObjectById() Delete an object from the store by its id.

  • reset() Delete all objects from the store.

  • getObjects() Get all the objects in the store.

  • getObjectIds() Get all the object ids in the store.

  • getObjectById() Get an object from the store by its id.

  • getObjectAtIndex() Get an object from the store at a specific index.

  • getObjectByPredicate()Get the first object matching the provided filter predicate.

  • getObjectIndexById() Get the index of an object by its id.

  • hasPlaceholders() Checks if the store has placeholder objects.

  • clearPlaceholders() Remove the placeholder objects from the store.

  • sections Get the sections of the datastore. As you add values to the datastore, they are also added to a sectionedList. Note that this sectionedList can only be added to and no items will ever be removed from it; this may change in the future. See sectioned-list library for details.

See the tests (tests/dataStore_test.js) to see how these methods are used.

config object

When creating the store, you can specify an optional configuration object.

placeholders: number|Array<Object>

You can specify a number of placeholders or an array of placeholder objects that will populate the store until you add your first actual object or you call the #clearPlaceholders() method.

sectionSizes: Array

See sectioned-list library.


carbon (4)


We use mocha and chai. Run npm test


Feel free to open a pull request!