Files
lik/ts/classes.limitedarray.ts

71 lines
1.4 KiB
TypeScript

import * as plugins from './classes.plugins.js';
export class LimitedArray<T> {
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<T> {
return this.array[Symbol.iterator]();
}
}