🎶 Sym - 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台

📕 思源笔记 - 一款桌面端笔记应用,支持 Windows、Mac 和 Linux

🎸 Solo - B3log 分布式社区的博客端节点,欢迎加入下一代社区网络

♏ Vditor - 一款浏览器端的 Markdown 编辑器

Array - symmetricDifferenceBy

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 ]

返回总目录

每天 30 秒系列之 JavaScript 代码


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

留下你的脚步