首页 > 其他分享 >JS取出两个数组中的不同或相同元素(简易方法)

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

时间:2023-03-27 16:46:52浏览次数:52  
标签:a1 return 数组 item JS filter 简易 arr2 arr1

一、使用 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]

 

标签:a1,return,数组,item,JS,filter,简易,arr2,arr1
From: https://www.cnblogs.com/fkcqwq/p/17262038.html

相关文章

  • nodejs学习笔记(一)——Node简介
    MarkDown的使用#标题1##标题2```代码片段```>内容引用+列表1+xxx-xxx+列表21.xxx2.xxx[官网链接](https://www.baidu.com)N......
  • Linux 下安装 node.js
    这里介绍两种安装方式:编译安装和使用编译后的安装包安装。https://nodejs.org/dist安装目录:/usr/local一、使用编译安装包安装1、进入安装目录:cd/usr/local2、下载......
  • 直播平台搭建,JS实现页面下拉加载数据操作
    直播平台搭建,JS实现页面下拉加载数据操作前端页面代码如下,我用的PHP,HTML页面应该就行,主要是在id="ph"的div内加载数据: <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0......
  • 从零开始的树状数组
    P3374【模板】树状数组1点击查看代码#include<bits/stdc++.h>#definecsconst#defineilinline#definepc(i)putchar(i)#defineLLlonglong#definefifirs......
  • 剑指offer04(Java)二维数组中的查找(中等)
    题目:在一个n*m的二维数组中,每一行都按照从左到右 非递减 的顺序排序,每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一......
  • JS之BOM、DOM
    https://www.cnblogs.com/12345huangchun/p/10171146.html一、BOM对象1,window对象所有浏览器都支持window对象,从概念上讲:一个HTML文档对应一个window对象,从功能......
  • HTML里JS代码的所处位置
    需要注意的是,HTML代码是自上到下加载的。掌握了这条便可以据此判断JS代码应该处于哪里。JS代码可以位于<head></head>之间,使得JS脚本提前加载;JS代码也可以位......
  • Java 在代码中区分json和array
    publicstaticvoidmain(String[]args){Stringn="{\n"+""data":[\n"+"{\n"+""category":"设计资质",\n"+""certNameL......
  • Node.js编写报时器,精度高、性能高
    Node.js编写的报时器,精度高、性能高//Functiontoprintthecurrenttimeeveryminuteonthe0thsecondandwithmillisecondprecisionfunctionprintTime(inter......
  • js - 稀释、防抖、节流 - 概念关系
    1.防抖期望:同一时间或者同一时间前后指定范围内【如1秒内】如果没有更多的操作,多次调一个函数时,希望只调一次函数实现:使用定时器,指定时间内更新定时器计时时长,直到为0......