Skip to content

unique 去重

使用 Set 和 Map 对象对数组进行高效去重。

函数定义

typescript
function unique<T>(array: T[]): T[]
function unique<
    T extends Record<keyof any, any>,
    U extends keyof T | ((item: T) => any)
>(
    array: T[],
    key: U,
    map?: ((item: T, i: number, key: U extends ((item: T) => any) ? ReturnType<U> : U extends string ? T[U] : never) => any)
): T[]
function unique<T>(array: T[], key?: keyof T | ((item: T) => any), map?: ((item: T, i: number, key: any) => any)): T[]

参数

array Record<keyof any, any>[]

需要去重的数组

key keyof any | ((item: Record<keyof any, any>) => any) 可选

用于去重的键或获取键的函数

map (item: Record<keyof any, any>) => any 可选

映射函数,可以在去重时进行映射

返回值

Record<keyof any, any>[] 去重后的数组

例子

ts
import { unique } from '@oasis-end/utils'

unique([1, 1, 1, 2, 2, 2]) // [1, 2]
unique([{ key: 1 }, { key: 1 }, { key: 2 }, { key: 2 }], 'key')
// [{ key: 1 }, { key: 2 }]

Released under the MIT License.