@naturalcycles/js-lib
Version:
Standard library for universal (browser + Node.js) javascript
45 lines (44 loc) • 1.02 kB
JavaScript
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;
}
}