JS取出两个数组中的不同或相同元素(简易方法)

JS取出两个数组中的不同或相同元素(简易方法)

一、使用 concat 和 filter 取出不同的元素(取出两个数组的不同元素==>既在arr1又在arr2)

var arr1 = [0,1,2,3,4,5];
var arr2 = [0,4,6,1,3,9];
function getArrDifference(arr1, arr2) {
        return arr1.concat(arr2).filter(function(v, i, arr) {
            return arr.indexOf(v) === arr.lastIndexOf(v);
        });
    }
    console.log(getArrDifference(arr1,arr2));
 
 //输出:(4) [2, 5, 6, 9]
concat 用来合并两个数组,也可以写成[...arr1, ...arr2]; 
filter用来过滤数组,参数arr表示合并后的数组;
indexOf表示元素第一次出现的位置,lastIndexOf表示元素最后一次出现的位置。

二、使用 some和 filter 取出相同的元素

var arr1 = [0,1,2,3,4,5];
var arr2 = [0,4,6,1,3,9];
function getArrDifference(arr1, arr2) {
        return arr1.filter(item =>{
            return arr2.some(i=>item==i)
            // return arr2.some(i=>item.id==i.id) // 数组是对象时
        });
    }
    console.log(getArrDifference(arr1,arr2));
 
 //输出:(4) [0, 1, 3, 4]

三、获取两个数组的相同元素(Set、filter、includes)

function getSame(arr1, arr2) {
  return [...new Set(arr1)].filter(item => 
    arr2.includes(item)  // [2, 3, 4, 5];
    //!arr2.includes(item)  // [1]; 取a1不在a2里面的元素
  )
}
// eg:
var a1 = [1, 2, 3, 3, 4, 5], 
    a2 = [2, 3, 4, 5, 6];
getSame(a1, a2); // [2, 3, 4, 5]

四、取a1不在a2里面的元素

function getSame(arr1, arr2) {
  return [...new Set(arr1)].filter(item => 
    !arr2.includes(item) 
  )
}
// eg:
var a1 = [1, 2, 3, 3, 4, 5], 
    a2 = [2, 3, 4, 5, 6];
getSame(a1, a2); //[1]
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值