1.0.0 • Published 4 years ago

@dmcl/indexed-array v1.0.0

Weekly downloads
-
License
ISC
Repository
github
Last release
4 years ago

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: '???' } ]