Skip to content

@utilslib/core/getArrayIntersection


(A∩B) 交集


getArrayIntersection

函数签名

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

描述

(A∩B) 交集

类型参数

参数名约束默认值描述
T---
Kkeyof Tkeyof T-

参数

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

返回值

T\[\]

点击查看源码
js
/**
 * (A∩B) 交集
 *
 * @type  {<T, K extends keyof T>(A: T[], B: T[], key: K) => T[]}
 * @param {T[]} A - 第一个数组。「主数组,当返回的内容从主数组中获取」
 * @param {T[]} B - 第二个数组。
 * @param {K extends keyof T} [key] - 可选的字段属性,用于判断交集。
 * @returns {T[]} 交集的数组。
 */
export function getArrayIntersection(A, B, key) {
  if (key) {
    const set = new Set(B.map((item) => item[key]));
    return A.filter((item) => set.has(item[key]));
  }
  return A.filter((item) => B.includes(item));
}
ts
/**
 * (A∩B) 交集
 *
 * @type  {<T, K extends keyof T>(A: T[], B: T[], key: K) => T[]}
 * @param {T[]} A - 第一个数组。「主数组,当返回的内容从主数组中获取」
 * @param {T[]} B - 第二个数组。
 * @param {K extends keyof T} [key] - 可选的字段属性,用于判断交集。
 * @returns {T[]} 交集的数组。
 */
export function getArrayIntersection<T, K extends keyof T = keyof T>(
  A: T[],
  B: T[],
  key?: K,
): T[] {
  if (key) {
    const set = new Set(B.map((item) => item[key]));
    return A.filter((item) => set.has(item[key]));
  }
  return A.filter((item) => B.includes(item));
}

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