2019-06-14
描述
两个数组中的每一个元素进过提供的函数计算后,返回他们之间不相同的元素。
提示
- 对每一个数组中的所有元素进行
fn
计算,使用Set
将计算结果存在一个集合中 - 使用
Array.prototype.filter()
来获取数组之间不包含的值 - 使用展开运算符来避免对原始数组的修改,从而生成新的对象结果
代码
const symmetricDifferenceBy = (a, b, fn) => {
const sA = new Set(a.map(v => fn(v))),
sB = new Set(b.map(v => fn(v)));
return [...a.filter(x => !sB.has(fn(x))), ...b.filter(x => !sA.has(fn(x)))];
};
示例
返回两个数组下取整后相互不存在的原始值:
symmetricDifferenceBy([2.7, 1.2], [2.3, 3.4], Math.floor); // [ 1.2, 3.4 ]
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于