mixit/src/helpers/lists/Lists.ts

46 lines
1023 B
TypeScript

export default abstract class Lists {
static last<T>(list: T[]) {
return list[list.length - 1]
}
static getIndex<T>(list: T[], where: (val: T) => boolean) {
for (let i = list.length - 1; i >= 0; i--){
if (where(list[i])) {
return i
}
}
return list.length
}
static removeAt<T>(list: T[], id: number) {
list.splice(id, 1)
}
static removeFrom<T>(list: T[], start: number) {
list.splice(start)
}
static removeFirst<T>(list: T[], where: (val: T) => boolean) {
this.removeAt(list, this.getIndex(list, where))
}
static removeFirstBy<T, U>(list: T[], mapper: (val: T) => U, val: U) {
this.removeFirst(list, e => mapper(e) === val)
}
static pushAll<T>(list: T[], elems: T[]) {
list.push.apply(list, elems)
}
static clear<T>(list: T[]) {
list.splice(0, list.length)
}
static for<T>(list: T[], action: (val: T, id: number, list: T[]) => void) {
for (let i = 0; i < list.length; i++){
action(list[i], i, list)
}
}
}