JavaScript数据分析之交集,并集,对称差集

目录
  • 列表交集
  • 列表并集
  • 列表对称差集

数据结构是待处理问题的数学模型,算法则是处理问题的策略。

作为软件工程师除了要对现实问题有很好的理解与把控外,还要深谙数据结构与算法才能找到合适的数学模型和算法,从而服务于后续的工作。由此数据结构与算法的重要性可见一斑。

列表交集

代码注释:

/**
* @description 两个列表的交集
* @param {Array} a 列表源数据
* @param {Array} b 列表源数据
* @return {Array} 目标数据
* @example
*
*   const a = [
*     { id: 1, name: '张三' },
*     { id: 2, name: '李四' },
*     { id: 3, name: '王五' },
*   ]
*   const b = [
*     { id: 1, name: '张三' },
*     { id: 4, name: '牛二' },
*     { id: 5, name: '赵六' },
*   ]
*
*   intersection(a, b, 'id')
*
*   [
*     { id: 1, name: '张三' }
*   ]
*/

方法封装:

export const intersection = (a, b, key = null) => {
  return a.filter(i => (key ? b.map(i => i[key]).includes(i[key]) : b.includes(i)))
}

列表并集

代码注释:

/**
* @description 两个列表的并集
* @param {Array} a 列表源数据
* @param {Array} b 列表源数据
* @return {Array} 目标数据
* @example
*
*   const a = [
*     { id: 1, name: '张三' },
*     { id: 2, name: '李四' },
*     { id: 3, name: '王五' },
*   ]
*   const b = [
*     { id: 1, name: '张三' },
*     { id: 4, name: '牛二' },
*     { id: 5, name: '赵六' },
*   ]
*
*   union(a, b, 'id')
*
*   [
*     { id: 1, name: '张三' },
*     { id: 2, name: '李四' },
*     { id: 3, name: '王五' },
*     { id: 4, name: '牛二' },
*     { id: 5, name: '赵六' },
*   ]
*/

方法封装:

export const union = (a, b, key = null) => {
  return [...a, ...b.filter(i => (key ? !a.map(i => i[key]).includes(i[key]) : !a.includes(i)))]
}

列表对称差集

代码注释:

/**
* @description 两个列表的对称差集
* @param {Array} a 列表源数据
* @param {Array} b 列表源数据
* @return {Array} 目标数据
* @example
*
*   const a = [
*     { id: 1, name: '张三' },
*     { id: 2, name: '李四' },
*     { id: 3, name: '王五' },
*   ]
*   const b = [
*     { id: 1, name: '张三' },
*     { id: 4, name: '牛二' },
*     { id: 5, name: '赵六' },
*   ]
*
*   difference(a, b, 'id')
*
*   [
*     { id: 2, name: '李四' },
*     { id: 3, name: '王五' },
*     { id: 4, name: '牛二' },
*     { id: 5, name: '赵六' },
*   ]
*/

方法封装:

export const difference = (a, b, key = null) => {
  return [...a, ...b].filter(i => ![a, b].every(g => (key ? g.map(i => i[key]).includes(i[key]) : g.includes(i))))
}

到此这篇关于JavaScript数据分析之交集,并集,对称差集的文章就介绍到这了,更多相关JS交集,并集,对称差集内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • js取两个数组的交集|差集|并集|补集|去重示例代码

    复制代码 代码如下: /** * each是一个集合迭代函数,它接受一个函数作为参数和一组可选的参数 * 这个迭代函数依次将集合的每一个元素和可选参数用函数进行计算,并将计算得的结果集返回 {%example <script> var a = [1,2,3,4].each(function(x){return x > 2 ? x : null}); var b = [1,2,3,4].each(function(x){return x < 0 ? x : null}); alert

  • JS计算两个数组的交集、差集、并集、补集(多种实现方式)

    方法一:最普遍的做法 使用 ES5 语法来实现虽然会麻烦些,但兼容性最好,不用考虑浏览器 JavaScript 版本.也不用引入其他第三方库. 1,直接使用 filter.concat 来计算 var a = [1,2,3,4,5] var b = [2,4,6,8,10] //交集 var c = a.filter(function(v){ return b.indexOf(v) > -1 }) //差集 var d = a.filter(function(v){ return b.index

  • JavaScript实现两个数组的交集

    目录 两个数组的交集 I 两个数组的交集 II 两个数组的交集 I 给定两个数组 ​​nums1​​​ 和 ​​nums2​​ ,返回 它们的交集 .输出结果中的每个元素一定是 唯一 的.我们可以 不考虑输出结果的顺序 . 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]解释:[4,9] 也是可通过的 注: 1 <= nums1.length,

  • JavaScript数据分析之交集,并集,对称差集

    目录 列表交集 列表并集 列表对称差集 数据结构是待处理问题的数学模型,算法则是处理问题的策略. 作为软件工程师除了要对现实问题有很好的理解与把控外,还要深谙数据结构与算法才能找到合适的数学模型和算法,从而服务于后续的工作.由此数据结构与算法的重要性可见一斑. 列表交集 代码注释: /** * @description 两个列表的交集 * @param {Array} a 列表源数据 * @param {Array} b 列表源数据 * @return {Array} 目标数据 * @examp

  • Pandas的DataFrame如何做交集,并集,差集与对称差集

    目录 一.简介 二.交集 三.并集 四.差集 五.对称差集 一.简介 Python的数据类型集合:由不同元素组成的集合,集合中是一组无序排列的可 Hash 的值(不可变类型),可以作为字典的Key Pandas中的DataFrame:DataFrame是一个表格型的数据结构,可以理解为带有标签的二维数组. 常用的集合操作如下图所示: 二.交集 pandas的 merge 功能默认为 inner 连接,可以实现取交集 集合 set 可以直接用 & 取交集 import pandas as pd p

  • ES6使用Set数据结构实现数组的交集、并集、差集功能示例

    本文实例讲述了ES6使用Set数据结构实现数组的交集.并集.差集功能.分享给大家供大家参考,具体如下: Set数据结构是es6中新增的,它类似于数组,但是成员的值唯一,没有重复值. Set本身是一个数据结构,用来生成Set数据节后 Set数据结构的实例有4种遍历方法: keys():返回一个键名的遍历器 values():返回一个键值便利器 entries():返回一个键值对便利器 forEach():使用回调函数遍历每个成员 由于Set数据结构没有键名,只有键值(或者说键名和键值是同一个值),

  • JS实现的集合去重,交集,并集,差集功能示例

    本文实例讲述了JS实现的集合去重,交集,并集,差集功能.分享给大家供大家参考,具体如下: 1. js 实现数组的集合运算 为了方便测试我们这里使用nodejs,代码如set_operation.js function array_remove_repeat(a) { // 去重 var r = []; for(var i = 0; i < a.length; i ++) { var flag = true; var temp = a[i]; for(var j = 0; j < r.lengt

  • python集合比较(交集,并集,差集)方法详解

    python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算. sets 支持 x in set, len(set),和 for x in set.作为一个无序的集合,sets不记录元素位置或者插入点.因此,sets不支持 indexing, slicing, 或其它类序列(sequence-l

  • Python求两个文本文件以行为单位的交集、并集与差集的方法

    本文实例讲述了Python求两个文本文件以行为单位的交集.并集与差集的方法.分享给大家供大家参考.具体实现方法如下: s1 = set(open('a.txt','r').readlines()) s2 = set(open('b.txt','r').readlines()) print 'ins: %s'%(s1.intersection(s2)) print 'uni: %s'%(s1.union(s2)) print 'dif: %s'%(s1.difference(s2).union(s

  • python获得两个数组交集、并集、差集的方法

    本文实例讲述了python获得两个数组交集.并集.差集的房部分.分享给大家供大家参考.具体如下: 1. 获取两个list 的交集 #方法一: a=[2,3,4,5] b=[2,5,8] tmp = [val for val in a if val in b] print tmp #[2, 5] #方法二 print list(set(a).intersection(set(b))) 2. 获取两个list 的并集 print list(set(a).union(set(b))) 3. 获取两个

  • JS数组交集、并集、差集的示例代码

    本文介绍了JS数组交集.并集.差集,分享给大家,具体如下: 由于下面会用到ES5的方法,低版本会存在兼容,先应添加对应的polyfill Array.prototype.indexOf = Array.prototype.indexOf || function (searchElement, fromIndex) { var index = -1; fromIndex = fromIndex * 1 || 0; for (var k = 0, length = this.length; k <

  • Python实现两个list求交集,并集,差集的方法示例

    本文实例讲述了Python实现两个list求交集,并集,差集的方法.分享给大家供大家参考,具体如下: 在python中,数组可以用list来表示.如果有两个数组,分别要求交集,并集与差集,怎么实现比较方便呢? 当然最容易想到的是对两个数组做循环,即写两个for循环来实现.这种写法大部分同学应该都会,而且也没有太多的技术含量,本博主就不解释了.这里给大家使用更为装bility的一些方法. 老规矩,talk is cheap,show me the code #!/usr/bin/env pytho

  • redis 交集、并集、差集的具体使用

    一.sinter .sunion .sdiff redis 支持 Set集合的数据存储,其中有三个比较特殊的方法: sinter key [key -] 查看一个集合的全部成员,该集合是所有给定集合的交集. sunion key [key -] 查看一个集合的全部成员,该集合是所有给定集合的并集. sdiff key [key -] 查看所有给定 key 与第一个 key 的差集 1.1.sinter 交集的示例 redis> SMEMBERS group_1 1) "LI LEI&quo

随机推荐