Sym - 一个用 Java 实现的现代化社区平台 • 源码 • 注册

Pipe - 小而美的开源博客平台 • 体验 • 皮肤
Solo - 一个用 Java 实现的博客系统,为你或你的团队创建个博客吧! • 源码下载 
Wide - 一个基于 Web 的 Go 语言 IDE • 教程试用

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 代码


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

推荐阅读
留下你的脚步