Skip to content

Array 数组方法 API

本文逐项记录 @fast-china/utils 的 Array 数组公开函数。

chunk 分组

将只读数组按固定大小分组。

签名

ts
export function chunk<Item>(items: readonly Item[], size: number): Item[][];

示例

ts
import { chunk } from "@fast-china/utils";

const result = chunk([1, 2, 3], 2);
console.log(result); // [[1, 2], [3]]

输入

输入值输入值类型必填/默认值输入值说明
itemsreadonly Item[]不会被修改的输入数组。
sizenumber每组最多包含的项目数,必须是正安全整数。

返回

返回值返回值类型返回值说明
resultItem[][]新建的二维数组;最后一组可能小于 size

removeNullishValues 去空值

删除数组中的 nullundefined,保留 false0 和空字符串。

签名

ts
export function removeNullishValues<Item>(items: readonly (Item | null | undefined)[]): Item[];

示例

ts
import { removeNullishValues } from "@fast-china/utils";

const result = removeNullishValues([1, null, 2, undefined, 3]);
console.log(result); // [1, 2, 3]

输入

输入值输入值类型必填/默认值输入值说明
itemsreadonly (Item | null | undefined)[]可包含空值的只读数组。

返回

返回值返回值类型返回值说明
resultItem[]保持原顺序的新数组。

unique 去重

使用 JavaScript Set 的 SameValueZero 语义去重。

签名

ts
export function unique<Item>(items: readonly Item[]): Item[];

示例

ts
import { unique } from "@fast-china/utils";

const result = unique([1, 2, 2, 3]);
console.log(result); // [1, 2, 3]

输入

输入值输入值类型必填/默认值输入值说明
itemsreadonly Item[]不会被修改的输入数组。

返回

返回值返回值类型返回值说明
resultItem[]保留每个值首次出现顺序的新数组;稀疏数组空位被忽略。

uniqueBy 去重

按选择器返回的键去重。

签名

ts
export function uniqueBy<Item, Key>(items: readonly Item[], selectKey: KeySelector<Item, Key>): Item[];

示例

ts
import { uniqueBy } from "@fast-china/utils";

const result = uniqueBy([1, 2, 3], (item) => item);

输入

输入值输入值类型必填/默认值输入值说明
itemsreadonly Item[]不会被修改的输入数组。
selectKeyKeySelector<Item, Key>接收项目与索引并返回去重键的函数。

返回

返回值返回值类型返回值说明
resultItem[]保留每个键首次出现项目的新数组;稀疏数组空位被忽略。

groupBy 分组

按选择器结果分组。

签名

ts
export function groupBy<Item, Key>(items: readonly Item[], selectKey: KeySelector<Item, Key>): Map<Key, Item[]>;

示例

ts
import { groupBy } from "@fast-china/utils";

const result = groupBy([1, 2, 3], (item) => item);

输入

输入值输入值类型必填/默认值输入值说明
itemsreadonly Item[]不会被修改的输入数组。
selectKeyKeySelector<Item, Key>返回任意 Map 键的函数。

返回

返回值返回值类型返回值说明
resultMap<Key, Item[]>按键首次出现顺序排列的 Map;每个分组保持输入顺序,稀疏空位被忽略。

partition 分区

按谓词把数组拆分为匹配项和非匹配项。

签名

ts
export function partition<Item>(items: readonly Item[], predicate: (item: Item, index: number) => boolean): [matched: Item[], unmatched: Item[]];

示例

ts
import { partition } from "@fast-china/utils";

const result = partition([1, 2, 3], (item) => item > 1);

输入

输入值输入值类型必填/默认值输入值说明
itemsreadonly Item[]不会被修改的输入数组。
predicate(item: Item, index: number) => boolean接收项目与索引的判断函数。

返回

返回值返回值类型返回值说明
result[matched: Item[], unmatched: Item[]]二元组:第一项匹配谓词,第二项不匹配;两组都保持原顺序并忽略稀疏空位。

difference 差集

返回只出现在左侧数组中的不同值。

签名

ts
export function difference<Item>(left: readonly Item[], right: readonly Item[]): Item[];

示例

ts
import { difference } from "@fast-china/utils";

const result = difference([1, 2, 3], [2, 4]);

输入

输入值输入值类型必填/默认值输入值说明
leftreadonly Item[]主输入数组。
rightreadonly Item[]需要排除的值。

返回

返回值返回值类型返回值说明
resultItem[]保留左侧首次出现顺序的去重结果;两侧稀疏空位都被忽略。

intersection 交集

返回两个数组共有的不同值。

签名

ts
export function intersection<Item>(left: readonly Item[], right: readonly Item[]): Item[];

示例

ts
import { intersection } from "@fast-china/utils";

const result = intersection([1, 2, 3], [2, 4]);

输入

输入值输入值类型必填/默认值输入值说明
leftreadonly Item[]决定结果顺序的数组。
rightreadonly Item[]用于成员判断的数组。

返回

返回值返回值类型返回值说明
resultItem[]保留左侧首次出现顺序的去重结果;两侧稀疏空位都被忽略。

symmetricDifference 异或集

返回只存在于其中一个数组的不同值。

签名

ts
export function symmetricDifference<Item>(left: readonly Item[], right: readonly Item[]): Item[];

示例

ts
import { symmetricDifference } from "@fast-china/utils";

const result = symmetricDifference([1, 2, 3], [2, 4]);

输入

输入值输入值类型必填/默认值输入值说明
leftreadonly Item[]决定左侧结果顺序的数组。
rightreadonly Item[]决定右侧结果顺序的数组。

返回

返回值返回值类型返回值说明
resultItem[]先按左侧、再按右侧首次出现顺序排列的对称差集;使用 SameValueZero 比较并忽略稀疏空位。

hasDuplicatesBy 重复

判断选择器产生的键是否重复。

签名

ts
export function hasDuplicatesBy<Item, Key>(items: readonly Item[], selectKey: KeySelector<Item, Key>): boolean;

示例

ts
import { hasDuplicatesBy } from "@fast-china/utils";

const result = hasDuplicatesBy([1, 2, 3], (item) => item);

输入

输入值输入值类型必填/默认值输入值说明
itemsreadonly Item[]不会被修改的输入数组。
selectKeyKeySelector<Item, Key>返回比较键的函数;键使用 SameValueZero 语义比较。

返回

返回值返回值类型返回值说明
resultboolean存在至少一个重复键时返回 true

allEqualBy 全等

判断所有项目是否具有相同的选择器结果。

签名

ts
export function allEqualBy<Item, Key>(items: readonly Item[], selectKey: KeySelector<Item, Key>): boolean;

示例

ts
import { allEqualBy } from "@fast-china/utils";

const result = allEqualBy([1, 2, 3], (item) => item);

输入

输入值输入值类型必填/默认值输入值说明
itemsreadonly Item[]不会被修改的输入数组。
selectKeyKeySelector<Item, Key>返回比较键的函数。

返回

返回值返回值类型返回值说明
resultboolean所有键都满足 SameValueZero 相等时返回 true