Skip to content

@utilslib/core/getArrayUnion


(A∪B) 并集


getArrayUnion

函数签名

typescript
function getArrayUnion<T, K extends keyof T>(A: T[], B: T[], key?: K): T[]

描述

(A∪B) 并集

类型参数

参数名约束默认值描述
T--- 数组元素类型
Kkeyof T-- 用于判断的属性键名类型

参数

参数名类型可选默认值描述
AT\[\]--
BT\[\]--
keyK--

返回值

T\[\]

点击查看源码
js
/**
 * (A∪B) 并集
 *
 * @template T - 数组元素类型
 * @template K - 用于判断的属性键名类型
 * @param {T[]} A - 第一个数组
 * @param {T[]} B - 第二个数组
 * @param {K} [key] - 可选的用于判断的属性键名
 * @returns {T[]} 并集数组
 */
export function getArrayUnion(A, B, key) {
  if (key) {
    const map = new Map();
    A.forEach((item) => map.set(item[key], item));
    B.forEach((item) => map.set(item[key], item));
    return Array.from(map.values());
  }
  return Array.from(new Set([...A, ...B]));
}
ts
/**
 * (A∪B) 并集
 *
 * @template T - 数组元素类型
 * @template K - 用于判断的属性键名类型
 * @param {T[]} A - 第一个数组
 * @param {T[]} B - 第二个数组
 * @param {K} [key] - 可选的用于判断的属性键名
 * @returns {T[]} 并集数组
 */
export function getArrayUnion<T, K extends keyof T>(
  A: T[],
  B: T[],
  key?: K,
): T[] {
  if (key) {
    const map = new Map<unknown, T>();
    A.forEach((item) => map.set(item[key], item));
    B.forEach((item) => map.set(item[key], item));
    return Array.from(map.values());
  }
  return Array.from(new Set([...A, ...B]));
}

如有错误,请提交issue :::