2019-06-24
描述
返回两个数组中的所有元素,且进过提供的对比函数比对后相等的元素只能存在一个。
提示
- 使用
Array.prototype.findIndex()
过滤出对比函数中不存在的值 - 创建一个
Set
,包含数组a
中的所有元素及步骤一中的结果 - 将最终的
Set
使用Array.from
转换为数组并返回
代码
const unionWith = (a, b, comp) =>
Array.from(new Set([...a, ...b.filter(x => a.findIndex(y => comp(x, y)) === -1)]));
示例
返回两个数组中四舍五入后唯一的元素:
unionWith([1, 1.2, 1.5, 3, 0], [1.9, 3, 0, 3.9], (a, b) => Math.round(a) === Math.round(b)); // [1, 1.2, 1.5, 3, 0, 3.9]