1.求交集
    var arr1 = [{name:'name1',id:1},{name:'name2',id:2},{name:'name3',id:3}];
var arr1Id = [1,2,3]
var arr2 = [{name:'name1',id:1},{name:'name2',id:2},{name:'name3',id:3},{name:'name4',id:4},{name:'name5',id:5}];
var result = arr2.filter(function(v){
return arr1Id.indexOf(v.id)!==-1 // 利用filter方法来遍历是否有相同的元素
})
console.log(result);
      2.求并集
    let arr1 = [{name:'name1',id:1},{name:'name2',id:2},{name:'name3',id:3}];
let arr2 = [{name:'name1',id:1},{name:'name4',id:4},{name:'name5',id:5}];
let arr3 = arr1.concat(arr2);
let result = [];
var obj = [];
result = arr3.reduce(function(prev, cur, index, arr) {
console.log(prev, cur);
obj[cur.id] ? '' : obj[cur.id] = true && prev.push(cur);
return prev;
}, []);
console.log(result);
    3.求差集
    let arr1 = [{name:'name1',id:1},{name:'name2',id:2},{name:'name3',id:3}];
let arr1Id = [1,2,3];
let arr2 = [{name:'name1',id:1},{name:'name4',id:4},{name:'name5',id:5}];
let arr2Id = [1,4,5];
let arr3 = arr1.concat(arr2);
let result = arr3.filter(function(v){
return arr1Id.indexOf(v.id)===-1 || (arr2Id.indexOf(v.id)===-1)
})
console.log(result);

  

      4.去重
    let arr = [{name:'name1',id:1},{name:'name2',id:2},{name:'name3',id:3},{name:'name1',id:1},{name:'name4',id:4},{name:'name5',id:5}];
var obj = [];
let result = arr.reduce(function(prev, cur, index, arr) {
console.log(prev, cur);
obj[cur.id] ? '' : obj[cur.id] = true && prev.push(cur);
return prev;
}, []);

实际组件中应用去重

 a方法
       let includeThis = false
let vm = this
if(vm.informedPersonList.length>0){
vm.informedPersonList.forEach(el =>{
if(el.id == vm.selectedTrueItem.id){
includeThis = true
}
})
}
if(includeThis===false){
vm.informedPersonList.push(vm.selectedTrueItem)
}else{
Message({message: '请勿重复添加',type: 'warning'})
}
 b方法(必须先let informedPersonL = vm.informedPersonList,不能直接使用vm.informedPersonList,否则浏览器控制台会报错)
            vm.informedPersonList.push(this.selectedTrueItem)
let obj = {};
let informedPersonL = vm.informedPersonList
informedPersonL = informedPersonL.reduce((cur,next) => {
obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
return cur;
},[]) //设置cur默认类型为数组,并且初始值为空的数组
vm.selectedTrueItem = {}
vm.$emit("backInformedPList",informedPersonL);

  

 

js求对象数组的交集/并集/差集/去重的更多相关文章

  1. 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 ...

  2. 【转】 js数组 Array 交集 并集 差集 去重

    原文:http://blog.csdn.net/ma_jiang/article/details/52672762 最劲项目需要用到js数组去重和交集的一些运算,我的数组元素个数可能到达1000以上, ...

  3. 如何求ArrayList集合的交集 并集 差集 去重复并集

    需要用到List接口中定义的几个方法: addAll(Collection<? extends E> c) :按指定集合的Iterator返回的顺序将指定集合中的所有元素追加到此列表的末尾 ...

  4. js Array 交集 并集 差集 去重

    最劲项目需要用到js数组去重和交集的一些运算,我的数组元素个数可能到达1000以上,网上的实现方式都是2次循环,性能不适合我的需求,1000*1000那循环次数太多了,所以我这里采用对象object来 ...

  5. LINQ操作数组(交集,并集,差集,最值,平均,去重复)

    数组是大学里经常拿来做算法练习的对象.一些经典算法非常有价值,考试.装逼.面试都十分有用.但现在是效率时代,编程讲究生产效率,利用LINQ,可以让程序猿避免写一些基本算法,把精力花在业务处理上. 下面 ...

  6. python [] 数组 list 交集 并集 差集

    >>> a = [1,2,3] >>> b = [2,4,5] >>> list(set(a).intersection(set(b))) [2] ...

  7. LINQ交集/并集/差集/去重

    using System.Linq; List<string> ListA = new List<string>(); List<string> ListB = n ...

  8. java用最少循环求两个数组的交集、差集、并集

    import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List ...

  9. C# 数组的交集、差集、并集

    C# 数组的交集.差集.并集 工作中经常会用这方面的知识来检查那些字段是必须输入的,那些是禁止输入. using System; using System.Collections.Generic; u ...

随机推荐

  1. ffmpeg接收udp输入的h264文件流,推流到rtmp服务器

    ffmpeg -re -f h264 -i udp://192.168.5.49:10002 -vcodec libx264 -f flv rtmp://192.168.5.155/live/1

  2. bind 0.0.0.0的作用是什么呢?

    背景描述: 今天在看redis的内容,看到同事在配置文件中将bind配置为0.0.0.0进行监听,不明白什么意思就查询了下,在此记录下. 解释: 0.0.0.0在服务器的环境中,指的就是服务器上所有的 ...

  3. 解决端口被占用问题(端口timewait)

    当jmeter做千级并发时,有报错的接口,查看是不是本地端口被占用完了 netstat -an   查看是否有端口在 timewait timewait是知道用那个端口,但是端口被别人占用着 见tcp ...

  4. [LeetCode] 260. Single Number III 单独数 III

    Given an array of numbers nums, in which exactly two elements appear only once and all the other ele ...

  5. 用浏览器控制台抓取shodan、搜索引擎、zone-h的结果

    0x00 前言 大部分内容来自参考连接的内容,只是一种爬取内容的思路. 在很久以前自己会有爬取zone-h做目标测试的需求,但是总是有各种反爬限制.而且个别网址还有前端自动生成内容的功能,使用Java ...

  6. GitLab数据备份与恢复

    创建备份 $ sudo gitlab-rake gitlab:backup:create 执行完备份命令后会在/var/opt/gitlab/backups目录下生成备份后的文件,如150080913 ...

  7. MySQL之表关系

    MySQL表关系 一对多关系 一对多与多对一是一个概念,指的是一个实体的某个数据与另外一个实体的多个数据有关联关系. 举例,学校中一个学.院可以有很多的学生,而一个学生只属于某一个学院(通常情况下), ...

  8. centos 安装 swoole_framework 框架

    composer require "matyhtf/swoole_framework" 运行以上命令 Using version ^1.20 for matyhtf/swoole_ ...

  9. 高级UI-Path和PathMeasure

    Path是一个工具类,用来记录线条的轨迹路径,然后通过绘制轨迹路径,可以得到各种各样的图案,而PathMeasure是用来对Path进行测量的工具,再Path的运用中,运用最多的就是贝塞尔曲线,也是本 ...

  10. SpringBoot中的@ConfigurationProperties

    有什么用 该注解的作用类似于@Value,即为组件中的属性进行赋值. 怎么用 首先是建立一个springboot的工程,不再赘述. 首先我们建立一个Person类和一个Dog类. package co ...