@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 | - | - | - |
K | keyof T | keyof T | - |
参数
| 参数名 | 类型 | 可选 | 默认值 | 描述 |
|---|---|---|---|---|
A | T\[\] | 否 | - | - |
B | T\[\] | 否 | - | - |
key | K | 是 | - | - |
返回值
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 :::