js求两个数组的交集|并集|差集|去重
let a = [1,2,3], b= [2, 4, 5];
1.差集
(a-b 差集:属于a但不属于b的集合) a-b = [1,3]
(b-a 差集:属于b但不属于a的集合) b-a = [4,5]
1) 第一种解决方案: filter+includes
let difference = a.concat(b).filter(v => !a.includes(v))
console.log(difference) //[4,5]
2) 第二种解决方案:Set+Array.from
ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
Set本身是一个构造函数,用来生成Set数据结构。
Set类似于数组,区别在于它所有的成员都是唯一的,不会有重复的值。
Set是一个新的数据结构。
Array.from() 方法可以将 Set结构转为数组。
由于key不能重复,所以,在Set种,没有重复的key。要创建一个Set,需要提供一个Array作为输入,或者直接创建一个空Set。
var s1 = new Set(); //空Set
var s2 = new Set([1,2,3]); //含1,2,3
重复元素在Set种自动被过滤:
var s = new Set([1,2,3,3,'3']);
s; // Set {1,2,3,"3"}
向Set加入值的时候,不会发生类型转换,所以3和'3'是不同的值。
注意数字3和字符串'3'是不同的元素。
new Set的作用是可以将传入的Array去重。
Array.from() 的作用是可以将 Set结构转为数组。
let aSet = new Set(a)
let bSet = new Set(b)
let difference = Array.from(new Set(a.concat(b).filter( v => !aSet.has(v) )))
console.log(difference) //[4,5]
3) 第三种解决方案:filter+indexOf
2.交集
1) 第一种解决方案:filter+includes
js求两个数组的交集|并集|差集|去重的更多相关文章
- java用最少循环求两个数组的交集、差集、并集
import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List ...
- JS - 计算两个数组的交集、差集、并集、补集(多种实现方式)
方法一:最普遍的做法 使用 ES5 语法来实现虽然会麻烦些,但兼容性最好,不用考虑浏览器 JavaScript 版本.也不用引入其他第三方库. 1,直接使用 filter.concat 来计算 var ...
- js求对象数组的交集/并集/差集/去重
1.求交集 var arr1 = [{name:'name1',id:1},{name:'name2',id:2},{name:'name3',id:3}]; var arr1Id = [1,2,3] ...
- 【转】 js数组 Array 交集 并集 差集 去重
原文:http://blog.csdn.net/ma_jiang/article/details/52672762 最劲项目需要用到js数组去重和交集的一些运算,我的数组元素个数可能到达1000以上, ...
- java使用bitmap求两个数组的交集
一般来说int代表一个数字,但是如果利用每一个位 ,则可以表示32个数字 ,在数据量极大的情况下可以显著的减轻内存的负担.我们就以int为例构造一个bitmap,并使用其来解决一个简单的问题:求两个数 ...
- js取两个数组的交集|差集|并集|补集|去重示例代码
http://www.jb51.net/article/40385.htm 代码如下: /** * each是一个集合迭代函数,它接受一个函数作为参数和一组可选的参数 * 这个迭代函数依次将集合的每一 ...
- js 获取两个数组的交集,并集,补集,差集
https://blog.csdn.net/piaojiancong/article/details/98199541 ES5 const arr1 = [1,2,3,4,5], arr2 = [5, ...
- leetcode-350-Intersection of Two Arrays II(求两个数组的交集)
题目描述: Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, ...
- (C#) 求两个数组的交集
基本上在面试的时候,会具体到两个int数组,或string数组.具体也就是讨论算法. 首先需要的是和面试的人确认题目的含义,并非直接答题. 然后,可以提出自己的想法,首先最快的是用linq { Lis ...
随机推荐
- Excel文件上传功能实现
$(function(){ let file; //上传点击事件 $('#btn').bind('click', function(){ let val = $('#fb').filebox('get ...
- kaliLinux 安装 telnet
一.安装xinetd telnetd root@helm:~# apt-get install xinetd telnetd 二.查看服务是否启动状态 说明自启动了 如果没有需要启动xinetd,启动 ...
- 【亲测】Asp.net Mvc5 + EF6 code first 方式连接MySQL总结
本文原文地址为:https://www.cnblogs.com/summit7ca/p/5423637.html 原文测试环境为windows 8.1+Vs2013+MySql5.7.12 本人在wi ...
- 淘宝的推荐系统 计算之道2A
小明刚刚入职淘宝,老大给他交代了一个简单的任务,实现一个简易的商品推荐系统. 这个商品推荐系统的需求如下: 一共有 n 件商品可以被推荐,他们的编号分别为 1 到 n.每件商品都有一个价格,编号为 i ...
- 学号 20175223 《Java程序设计》第9周学习总结
目录 教材学习内容总结 教材学习中的问题和解决过程 1. 输出文件时过多输出. 代码调试中的问题和解决过程 1. 问题:费马素性检验程序. [代码托管] 学习进度条 参考资料 目录 教材学习内容总结 ...
- 18-09-09 Linux 系统如何获取外部的数据例如 软件的2中方式
方式一 利用U盘 手动挂载/卸载 U盘==========================================1, cat /proc/partitions查看U盘插入前后, 多出的 s ...
- Java ee Turorial Hello1 Hello1.java解析
package javaeetutorial.hello1; import javax.enterprise.context.RequestScoped;import javax.inject.Nam ...
- callback函数
const getUserInfo = function (callback) { try { let params = { "url": "https://h5.m.t ...
- 【原创】Aduino小车玩法全记录
本来打算用一周时间好好研究下基于Arduino开发板的小车实验,结果实际上两天就完成了小车可玩的各种功能,包括完成特定动作组合,黑线循迹,(带后退)红外避障和(带舵机)超声波避障,超声波测距,红外遥控 ...
- SR-IOV 简介
SR-IOV 技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性.SR-IOV 标准允许在虚拟机之间高效共享 PCIe(Peripheral Component Interconnect Exp ...