碎片时间学编程「128]:映射数组对称差


在将提供的函数应用于两个数组的每个数组元素后,返回两个数组之间的对称差。

  • 从每个数组创建一个Set,获取每个数组的唯一值以应用 fn 。
  • 对它们中的每一个元素使用Array.prototype.filter()仅保留不包含在另一个中的值。

JavaScript

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.1, 1.2], [2.3, 3.4], Math.floor); // [ 1.2, 3.4 ]symmetricDifferenceBy(  [{ id: 1 }, { id: 2 }, { id: 3 }],  [{ id: 1 }, { id: 2 }, { id: 4 }],  i => i.id);// [{ id: 3 }, { id: 4 }]

更多内容请访问我的网站:https://www.icoderoad.com

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章