index.d.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. //Extend Array
  2. interface Array<T> {
  3. remove(filter: (v: T, i: number, arr: Array<T>) => boolean): Array<T>;
  4. remove(filter: T): Array<T>;
  5. removeOne(filter: (v: T, i: number, arr: Array<T>) => boolean): Array<T>;
  6. removeOne(filter: T): Array<T>;
  7. first(): T;
  8. last(): T;
  9. max(): T;
  10. max<P>(mapper: (v: T, i: number, arr: this) => P): P | null;
  11. min(): T;
  12. min<P>(mapper: (v: T, i: number, arr: this) => P): P | null;
  13. distinct(): Array<T>;
  14. filterIndex(filter: (v: T, i: number, arr: this) => boolean): Array<number>;
  15. count(filter: (v: T, i: number, arr: this) => boolean): number;
  16. sum(mapper?: (v: T, i: number, arr: this) => number): number;
  17. average(mapper?: (v: T, i: number, arr: this) => number): number;
  18. /**
  19. * 同find,但返回整个Array<T>中最后一个匹配元素
  20. */
  21. findLast(predicate: (value: T, index: number, obj: Array<T>) => boolean): T | undefined;
  22. /**
  23. * 同find,但返回整个Array<T>中最后一个匹配元素的index
  24. */
  25. findLastIndex(predicate: (value: T, index: number, obj: Array<T>) => boolean): number;
  26. //排序 返回新的数组
  27. orderBy(...mappers: ((v: T) => any)[]): Array<T>;
  28. orderByDesc(...mappers: ((v: T) => any)[]): Array<T>;
  29. /**
  30. * 二分查找 前提是数组一定是有序的
  31. * @param value 要查找的值
  32. * @param keyMapper 要查找的值的mapper方法(默认为查找数组元素本身)
  33. * @return 查找到的index,查不到返回-1
  34. */
  35. binarySearch(value: number | string, keyMapper?: (v: T) => (number | string)): number;
  36. /**
  37. * 二分插入 前提是数组一定是有序的
  38. * @param item 要插入的值
  39. * @param keyMapper 二分查找时要查找的值的mapper方法(默认为查找数组元素本身)
  40. * @param unique 是否去重,如果为true,则如果数组内已经有值时不插入,返回已有值的number
  41. * @return 返回插入的index位置
  42. */
  43. binaryInsert(item: T, unique?: boolean): number;
  44. binaryInsert(item: T, keyMapper: (v: T) => (number | string), unique?: boolean): number;
  45. /**
  46. * 二分去重 前提是数组一定是有序的
  47. * @param keyMapper 二分查找时要查找的值的mapper方法(默认为查找数组元素本身)
  48. */
  49. binaryDistinct(keyMapper?: (v: T) => (number | string)): Array<T>;
  50. groupBy(grouper: (v: T) => any): (T[] & { key: any })[];
  51. }