1.0.0 • Published 4 years ago
@dmcl/indexed-array v1.0.0
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: '???' } ]
1.0.0
4 years ago