Updated ASet & Path Events
All checks were successful
Build / Build NPM Project (push) Successful in 37s
Build / Tag Version (push) Successful in 7s
Build / Publish Documentation (push) Successful in 1m43s

This commit is contained in:
2024-10-17 10:24:18 -04:00
parent 1c1a3f6a6e
commit fbbe3c99ef
7 changed files with 53 additions and 15 deletions

View File

@ -1,3 +1,5 @@
import {isEqual} from './objects.ts';
/**
* An array which functions as a set. It guarantees unique elements
* and provides set functions for comparisons
@ -34,7 +36,7 @@ export class ASet<T> extends Array {
delete(...items: T[]) {
items.forEach(el => {
const index = this.indexOf(el);
if(index != -1) this.slice(index, 1);
if(index != -1) this.splice(index, 1);
})
return this;
}
@ -57,6 +59,17 @@ export class ASet<T> extends Array {
return this.indexOf(el) != -1;
}
/**
* Find index number of element, or -1 if it doesn't exist. Matches by equality not reference
*
* @param {T} search Element to find
* @param {number} fromIndex Starting index position
* @return {number} Element index number or -1 if missing
*/
indexOf(search: T, fromIndex?: number): number {
return super.findIndex((el: T) => isEqual(el, search), fromIndex);
}
/**
* Create list of elements this set has in common with the comparison set
* @param {ASet<T>} set Set to compare against