Skip to content

Latest commit

 

History

History
763 lines (464 loc) · 14.3 KB

File metadata and controls

763 lines (464 loc) · 14.3 KB

@hubxu/utils / Exports / array

Module: array

Table of contents

References

Functions

References

alphabeticalSort

Re-exports alphabeticalSort


asymmetricDifferenceArrayBase

Re-exports asymmetricDifferenceArrayBase


asymmetricDifferenceArrayObject

Re-exports asymmetricDifferenceArrayObject


differenceArrayBase

Re-exports differenceArrayBase


differenceArrayObject

Re-exports differenceArrayObject


intersectionArrayBase

Re-exports intersectionArrayBase


intersectionArrayObject

Re-exports intersectionArrayObject


orderBy

Re-exports orderBy


quickSort

Re-exports quickSort


symmetricDifferenceArrayBase

Re-exports symmetricDifferenceArrayBase


symmetricDifferenceArrayObject

Re-exports symmetricDifferenceArrayObject


unionArrayBase

Re-exports unionArrayBase


unionArrayObject

Re-exports unionArrayObject

Functions

allDistinct

allDistinct<T>(arr): boolean

检查数组中的所有项是否都是唯一的

Type parameters

Name
T

Parameters

Name Type
arr T[]

Returns

boolean

Defined in

src/array/index.ts:22


averageArray

averageArray(arr): number

计算平均值

Parameters

Name Type
arr number[]

Returns

number

Defined in

src/array/index.ts:236


hasDuplicates

hasDuplicates<T>(arr): boolean

检查数组中是否有重复项

Type parameters

Name
T

Parameters

Name Type
arr T[]

Returns

boolean

Defined in

src/array/index.ts:15


makeUniqueElementsBy

makeUniqueElementsBy<T>(arr, fn): T[]

对数组进行去重操作,适用于数组长度较大的情况。

Description

此方法使用 Map 数据结构来提高大型数组的去重效率。它通过一个键生成函数来判断元素的唯一性, 保留每个唯一键的第一个出现的元素。

Example

const arr = [
  { id: 1, name: '张三' },
  { id: 2, name: '李四' },
  { id: 1, name: '张三(重复)' },
  { id: 3, name: '王五' }
];
const uniqueArr = makeUniqueElementsBy(arr, item => item.id);
结果: [{ id: 1, name: '张三' }, { id: 2, name: '李四' }, { id: 3, name: '王五' }]

Type parameters

Name Description
T 数组元素的类型

Parameters

Name Type Description
arr T[] 需要去重的数组
fn (item: T) => any 用于生成唯一键的函数

Returns

T[]

返回去重后的新数组

Defined in

src/array/index.ts:134


makeUniqueElementsBy2

makeUniqueElementsBy2<T, U>(arr, compareValues, fn): T[]

根据比较函数和比较值数组过滤数组元素。

Description

此方法遍历原数组,对每个元素应用比较函数。如果比较函数对任何比较值返回 true, 则该元素将被从结果数组中排除。这种方法允许基于多个条件进行复杂的数组过滤。

Example

const numbers = [1, 2, 3, 4, 5];
const compareValues = [2, 4];
const result = makeUniqueElementsBy2(numbers, compareValues, (num, compare) => num % compare === 0);
结果: [1, 3, 5] // 删除了能被 2 或 4 整除的数

Type parameters

Name Description
T 原数组元素的类型
U 比较值的类型

Parameters

Name Type Description
arr T[] 要过滤的原数组
compareValues U[] 用于比较的值数组
fn (item: T, compareValue: U) => boolean 比较函数,接受一个数组元素和一个比较值,返回布尔值

Returns

T[]

返回过滤后的新数组

Defined in

src/array/index.ts:166


maxBy

maxBy<T>(arr, select): number

根据函数返回的值查找数组的最大值和最小值

Example

maxBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], x => x.n); // 8
maxBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], 'n'); // 8

minBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], x => x.n); // 2
minBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], 'n'); // 2

Type parameters

Name
T

Parameters

Name Type
arr T[]
select (i: T) => any | keyof T

Returns

number

Defined in

src/array/index.ts:218


maxN

maxN<T>(arr, n?): T[]

查询数组的N个最大值

Example

maxN([1, 3, 2, 5, 4], 2); // 返回 [5, 4]

Type parameters

Name Description
T 数组元素的类型

Parameters

Name Type Default value Description
arr T[] undefined 输入数组
n? number 1 要返回的最大值的数量,默认为1

Returns

T[]

包含N个最大值的数组

Defined in

src/array/index.ts:189


medianArray

medianArray(arr): number

计算中位数

Parameters

Name Type
arr number[]

Returns

number

Defined in

src/array/index.ts:243


minBy

minBy<T>(arr, select): number

Type parameters

Name
T

Parameters

Name Type
arr T[]
select (i: T) => any | keyof T

Returns

number

Defined in

src/array/index.ts:222


minN

minN<T>(arr, n?): T[]

查询数组的N个最小值

Example

minN([1, 3, 2, 5, 4], 2); // 返回 [1, 2]

Type parameters

Name Description
T 数组元素的类型

Parameters

Name Type Default value Description
arr T[] undefined 输入数组
n? number 1 要返回的最小值的数量,默认为1

Returns

T[]

包含N个最小值的数组

Defined in

src/array/index.ts:204


productArray

productArray(arr): number

计算乘积

Parameters

Name Type
arr number[]

Returns

number

Defined in

src/array/index.ts:252


removeNonUnique

removeNonUnique<T>(arr): T[]

删除出现多次的数组项。 出现多次的元素必须出现在至少两个不同的索引中。

Example

removeNonUnique([1, 2, 2, 3, 4, 4, 5]); // [1, 3, 5]

Type parameters

Name
T

Parameters

Name Type
arr T[]

Returns

T[]

Defined in

src/array/index.ts:31


removeNonUniqueBy

removeNonUniqueBy<T>(arr, fn): T[]

删除非唯一项,只保留数组中出现过一次的项。

Description

此方法用于从数组中删除非唯一项,只保留那些在数组中仅出现一次的元素。 它使用一个自定义的比较函数来判断元素是否唯一。

Example

const arr = [1, 2, 2, 3, 4, 4, 5];
const result = removeNonUniqueBy(arr, (a, b) => a === b);
console.log(result); // [1, 3, 5]

Example

const objArr = [
  { id: 1, name: '张三' },
  { id: 2, name: '李四' },
  { id: 1, name: '王五' },
  { id: 3, name: '赵六' }
];
const result = removeNonUniqueBy(objArr, (a, b) => a.id === b.id);
console.log(result); // [{ id: 2, name: '李四' }, { id: 3, name: '赵六' }]

Type parameters

Name Description
T 数组元素的类型

Parameters

Name Type Description
arr T[] 需要处理的数组
fn (a: T, b: T, indexA: number, indexB: number) => boolean 比较函数

Returns

T[]

返回只包含唯一项的新数组

Defined in

src/array/index.ts:71


removeUnique

removeUnique<T>(arr): T[]

删除所有只出现一次的值(removeNonUnique 相反操作)。 删除所有只出现一次的值。在这种情况下,两个索引必须相同。

Example

removeUnique([1, 2, 2, 3, 4, 4, 5]); // [2, 4]

Type parameters

Name
T

Parameters

Name Type
arr T[]

Returns

T[]

Defined in

src/array/index.ts:40


sampleArrayItem

sampleArrayItem<T>(arr): T

从数组中随机获取一个元素

Type parameters

Name
T

Parameters

Name Type
arr T[]

Returns

T

Defined in

src/array/index.ts:259


shuffle

shuffle<T>(arr, inplace?): T[]

洗牌函数 ”Fisher-Yates 洗牌算法“(随机排列数组)

Type parameters

Name
T

Parameters

Name Type Default value
arr T[] undefined
inplace boolean true

Returns

T[]

Defined in

src/array/index.ts:266


sumArray

sumArray(arr): number

计算总和

Parameters

Name Type
arr number[]

Returns

number

Defined in

src/array/index.ts:229


uniqueElementsBy

uniqueElementsBy<T>(arr, fn): T[]

使用比较函数来查找是否存在重复项(去重)。 更复杂的数据(例如对象)无法使用相等比较来进行比较,因此我们需要使用函数来检查重复项。

Description

此方法用于对复杂数据类型的数组进行去重操作。它接受一个数组和一个比较函数作为参数, 通过比较函数来判断两个元素是否相同,从而实现去重。

Example

const arr = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' },
  { id: 1, name: 'Alice' },
  { id: 3, name: 'Charlie' }
];
const uniqueArr = uniqueElementsBy(arr, (a, b) => a.id === b.id);
结果: [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' }]

Type parameters

Name Description
T 数组元素的类型

Parameters

Name Type Description
arr T[] 需要去重的数组
fn ComparatorFn<T> 用于比较两个元素是否相同的函数

Returns

T[]

返回去重后的新数组

Defined in

src/array/index.ts:103


uniquePrimitiveElements

uniquePrimitiveElements<T>(arr): T[]

获取数组中的唯一值(数组去重,但仅适用于基础数据类型)

Type parameters

Name
T

Parameters

Name Type
arr T[]

Returns

T[]

Defined in

src/array/index.ts:8