UNPKG

@naturalcycles/js-lib

Version:

Standard library for universal (browser + Node.js) javascript

45 lines (44 loc) 1.02 kB
import { _shuffle } from './array.util.js'; /** * Better Array. * * @experimental */ export class Array2 extends Array { static of(...items) { return new Array2(...items); } // eslint-disable-next-line @typescript-eslint/class-literal-property-style get [Symbol.toStringTag]() { return 'Array2'; } firstOrUndefined() { return this[0]; } first() { if (!this.length) throw new Error('Array.first called on empty array'); return this[0]; } lastOrUndefined() { return this[this.length - 1]; } last() { const { length } = this; if (!length) throw new Error('Array.last called on empty array'); return this[length - 1]; } uniq() { return new Array2(...new Set(this)); } shuffle() { return new Array2(..._shuffle(this)); } isEmpty() { return this.length === 0; } isNotEmpty() { return this.length !== 0; } }