array/intersection.js

/**
 * @alias array_intersection
 * @category array
 * @param {Array} array1 - 第一个数组。
 * @param {Array} array2 - 第二个数组。
 * @returns {Array} - 包含两个数组交集的数组。
 * @author penn <https://github.com/penn201500>
 * @example
 * console.log(arrayIntersection([1, 2, 3], [2, 3, 4]))
 * // 输出: [2, 3]
 * @description 计算两个数组的交集。
 */
export default function arrayIntersection(array1, array2) {
    if (!Array.isArray(array1) || !Array.isArray(array2)) {
        throw new TypeError('Both arguments must be arrays');
    }

    const set2 = new Set(array2);
    const intersectionElements = array1.filter((element) => set2.has(element));
    return Array.from(new Set(intersectionElements)); // unique
}