/** * 合并所有对象,如果两个对象包含同名的数组,则将这些数组合并为一个 * @param target 要合并的目标对象 * @param sources 要合并的源对象 * @example merge({x: [0], y: 0}, {x: [1], y: 2}) // {x: [0, 1], y: 2} */ export declare function merge(target: T, ...sources: S[]): T & S; /** * 删除字符串开头的 UTF-8 BOM 字符 * @param content 要处理的字符串 */ export declare function stripBOM(content: string): string; /** * 返回首字母大写的字符串 * @param value 要处理的字符串 */ export declare function capitalize(value: string): string; /** * 替换字符串,如果字符串未替换则返回 `null` * @param search 替换的源 * @param replacer 替换的目标 */ export declare function replaceString(value: string, search: RegExp, replacer: string | ((source: string, ...args: any[]) => string)): string; /** * 生成指定长度的随机字符串 * @param length 要生成的字符串长度 */ export declare function randomString(length: number): string; /** * 拼接两个数组 * @param x 要串联的数组 * @param y 要串联的数组 */ export declare function concat(x: T[] | null | undefined, y: T[] | null | undefined): T[]; /** * 如果数组中不存在指定的项则添加到数组末尾 * @param arr 要处理的数组 * @param item 要添加的项 * @return 如果已添加到数组则返回 `true`,否则说明该项已存在,返回 `false` * @example pushIfNotExists(1, 9, 0], 1) // 数组变成 [1, 9, 0] * @example pushIfNotExists([1, 9, 0], 2) // 数组变成 [1, 9, 0, 2] */ export declare function pushIfNotExists(arr: T[], item: T): boolean; /** * 在已排序的数组中二分查找指定的项,如果找到则返回该值的位置,否则返回离该值最近的位置的位反值(总是小于 0) * @param arr 要遍历的数组 * @param item 要查找的项 * @param keySelector 用于获取每项元素待比较的键的回调函数 * @param keyComparer 用于确定两个键排序顺序的回调函数 * @param keyComparer.left 要比较的左值 * @param keyComparer.right 要比较的右值 * @param keyComparer.return 如果左值应排在右值前面,应返回负数,如果右值应排在右值后面,应返回正数,如果两者相同则返回零 * @param start 开始查找的索引(从 0 开始) * @param end 结束查找的索引(从 0 开始,不含) */ export declare function binarySearch(arr: readonly T[], item: V, keySelector?: (item: T | V) => K, keyComparer?: (left: K, right: K) => number, start?: number, end?: number): number; /** * 按顺序插入元素到已排序的数组中,如果值已存在则插入到存在的值之后 * @param sortedArray 已排序的数组 * @param item 要插入的值 * @param comparer 确定元素顺序的回调函数,如果函数返回 `true`,则将 `x` 排在 `y` 的前面,否则相反 * @param comparer.x 要比较的第一个元素 * @param comparer.y 要比较的第二个元素 */ export declare function insertSorted(sortedArray: T[], item: T, comparer: (x: T, y: T) => boolean): void; /** * 删除数组中指定的项,如果有多个匹配项则只删除第一项 * @param arr 要处理的数组 * @param item 要删除的项 * @param startIndex 开始搜索的索引(从 0 开始) * @return 返回被删除的项在原数组中的索引,如果数组中找不到指定的项则返回 `-1` * @example remove([1, 9, 9, 0], 9) // 1, 数组变成 [1, 9, 0] * @example while(remove(arr, "wow") >= 0) {} // 删除所有 "wow" */ export declare function remove(arr: T[], item: T, startIndex?: number): number; /** * 编码正则表达式中的特殊字符 * @param pattern 要编码的正则表达式模式 */ export declare function escapeRegExp(pattern: string): string; /** * 格式化指定的日期对象 * @param date 要处理的日期对象 * @param format 格式字符串,其中以下字符(区分大小写)会被替换: * * 字符| 意义 | 示例 * ----|---------------|-------------------- * y | 年 | yyyy: 1999, yy: 99 * M | 月(从 1 开始)| MM: 09, M: 9 * d | 日(从 1 开始)| dd: 09, d: 9 * H | 时(24 小时制)| HH: 13, H: 13 * m | 分 | mm: 06, m: 6 * s | 秒 | ss: 06, s: 6 * * @example formatDate(new Date("2016/01/01 00:00:00"), "yyyyMMdd") // "20160101" * @see https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html */ export declare function formatDate(date: Date, format: string): string; /** * 格式化时间为类似“几分钟前”的格式 * @param date 要格式化的时间 * @param now 当前时间 */ export declare function formatRelativeDate(date: Date, now?: Date): string; /** * 格式化指定的高精度时间段 * @param hrTime 由秒和纳秒部分组成的数组 * @example formatHRTime([1, 20000000]) // "1.02s" */ export declare function formatHRTime(hrTime: readonly [number, number]): string; /** * 格式化指定的字节大小 * @param byteSize 要格式化的字节大小 * @example formatSize(1024) // "1KB" */ export declare function formatSize(byteSize: number): string; /** * 同时遍历数组每一项并执行异步回调函数 * @param array 要遍历的数组 * @param callback 要执行的回调函数 */ export declare function parallelForEach(array: T[], callback: (item: T) => R): Promise[]>;