@dmcl/indexed-array

1.0.0 • Public • Published

Array class extension - added indexing by fields. You can specify both unique indexes and non-unique ones. Supported methods are push, pop, shift, unshift and splice.

const IndexedArray = require("@dmcl/indexed-array")

// source array
const data = [
    {id: 1, name: 'Jack'},
    {id: 2, name: 'Oliver'},
    {id: 3, name: 'Harry'},
    {id: 4, name: 'William'},
    {id: 5, name: 'Harry'},
];

// indexed array initialization
const arr = new IndexedArray(data, {
    id:   true,   // unique key
    name: false,  // not a unique key
});

// get an element with id = 2
console.log(arr.findBy('id', 2)); // => { id: 2, name: 'Oliver' }

// get an array of elements with name = 'Harry'
console.log(arr.findBy('name', 'Harry')); // => [ { id: 3, name: 'Harry'}, {id: 5, name: 'Harry' } ]

// push item
arr.push({id: 6, name: 'Daniel'});

// get an element with id = 6
console.log(arr.findBy('id', 6)); // => { id: 6, name: 'Daniel' }

// remove an element with index 3 (id = 4)
arr.splice(3, 1, {id: 7, name: '???'});

// get an element with id = 4
console.log(arr.findBy('id', 4)); // => undefined

// get an array of elements with name = '???'
console.log(arr.findBy('name', '???')); // => [ { id: 7, name: '???' } ]

Readme

Keywords

Package Sidebar

Install

npm i @dmcl/indexed-array

Weekly Downloads

4

Version

1.0.0

License

ISC

Unpacked Size

7.27 kB

Total Files

9

Last publish

Collaborators

  • dmcl