MapArray.ts 900 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /** 支持Map与Array功能的集合对象 */
  2. export class MapArray<K, V> extends Map<K, V>{
  3. private _array: V[] = [];
  4. /** 获取数组对象 */
  5. get array() {
  6. return this._array;
  7. }
  8. /**
  9. * 设置值
  10. * @param key 关键字
  11. * @param value 数据值
  12. */
  13. set(key: K, value: V) {
  14. if (!this.has(key)) {
  15. this._array.push(value);
  16. }
  17. return super.set(key, value);
  18. }
  19. /**
  20. * 删除值
  21. * @param key 关键字
  22. */
  23. delete(key: K): boolean {
  24. var value = this.get(key);
  25. if (value) {
  26. var index = this._array.indexOf(value);
  27. if (index > -1) this._array.splice(index, 1);
  28. return super.delete(key);
  29. }
  30. return false;
  31. }
  32. clear(): void {
  33. this._array.splice(0, this._array.length);
  34. super.clear();
  35. }
  36. }