import * as plugins from './classes.plugins.js'; export class LimitedArray { array: T[] = []; arrayLimit: number; constructor(limitArg: number) { this.arrayLimit = limitArg; } public get length(): number { return this.array.length; } addOne(objectArg: T) { this.array.unshift(objectArg); if (this.array.length > this.arrayLimit) { this.array.length = this.arrayLimit; } } addMany(objectArrayArg: T[]) { for (let objectArg of objectArrayArg) { this.addOne(objectArg); } } setLimit(limitArg: number) { this.arrayLimit = limitArg; if (this.array.length > this.arrayLimit) { this.array.length = this.arrayLimit; } } getAverage(): number { if (this.array.length === 0) { return 0; } if (typeof this.array[0] === 'number') { let sum = 0; for (let localNumber of this.array) { let localNumberAny: any = localNumber; sum = sum + localNumberAny; } return sum / this.array.length; } else { return null; } } remove(item: T): boolean { const idx = this.array.indexOf(item); if (idx !== -1) { this.array.splice(idx, 1); return true; } return false; } clear(): void { this.array.length = 0; } getArray(): T[] { return [...this.array]; } public [Symbol.iterator](): Iterator { return this.array[Symbol.iterator](); } }