import { inject, injectable } from 'inversify';
import { ServiceIdentifiers } from '../container/ServiceIdentifiers';
import { IArrayUtils } from '../interfaces/utils/IArrayUtils';
import { IRandomGenerator } from '../interfaces/utils/IRandomGenerator';
@injectable()
export class ArrayUtils implements IArrayUtils {
/**
* @type {IRandomGenerator}
*/
private readonly randomGenerator: IRandomGenerator;
/**
* @param {IRandomGenerator} randomGenerator
*/
constructor (
@inject(ServiceIdentifiers.IRandomGenerator) randomGenerator: IRandomGenerator
) {
this.randomGenerator = randomGenerator;
}
/**
* @param {number} length
* @returns {number[]}
*/
public arrayRange (length: number): number[] {
const range: number[] = [];
for (let i: number = 0; i < length; i++) {
range.push(i);
}
return range;
}
/**
* @param {T[]} array
* @param {number} times
* @returns {T[]}
*/
public arrayRotate