首页 > 其他分享 >JS 判断数组包含另一个数组

JS 判断数组包含另一个数组

时间:2022-12-09 16:11:56浏览次数:58  
标签:console 包含 temp JS item arr2 数组 arr1 log

ES6方法:

1、findIndex (跟find类似,返回值不一样,findIndex找到则返回元素下标,否则返回-1)

function  getInclude(arr1, arr2) {
  let temp = []
     for (const item of arr2) {
        arr1.findIndex(i => i === item) !== -1 ? temp.push(item) : ''
    }
  return temp.length ? true : false
}
console.log('findIndex1', getInclude([3,2,5,8,4,7,6,9], [1,0,0])) // false
console.log('findIndex2', getInclude([3,2,5,8,4,7,6,9], [9,0,0])) // true

2、find   (返回第一个符合条件的数组元素,没找到则返回undefined)

// 1、find()
function  getInclude(arr1, arr2) {
  let temp = []
    for (const item of arr2) {
      arr1.find(i => i === item) ? temp.push(item) : ''
    }
  return temp
}
console.log('find1', getInclude([3,2,5,8,4,7,6,9], [1,0,0])) // []
console.log('find2', getInclude([3,2,5,8,4,7,6,9], [9,6,7])) // [9, 6, 7]

3、includes (方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似)

// 3、includes
function  getInclude3(arr1, arr2) {
  let temp = []
     for (const item of arr2) {
      arr1.includes(item) ? temp.push(item) : ''
  }
  return temp.length ? true : false
}
console.log('includes1', getInclude3([3,2,5,8,4,7,6,9], [1,0,0])) // false
console.log('includes2', getInclude3([3,2,5,8,4,7,6,9], [9,0,0])) // true

ES5可用方法:

1、indexOf (判断一个元素是否存在于数组中,若不存在返回-1,若存在就返回它第一次出现的位置)

// 1、indexOf()
function  getInclude4(arr1, arr2) {
  let temp = []
     for (const item of arr2) {
    arr1.indexOf(item) !== -1 ? temp.push(item) : ''
  }
  return temp.length ? true : false
}
console.log('indexOf', getInclude4([3,2,5,8,4,7,6,9], [1,0,0])) // false
console.log('indexOf', getInclude4([3,2,5,8,4,7,6,9], [9,0,0])) // true

2、filter(过滤元素,返回一个新数组,新的数组由每次函数返回值为true对应的元素组成,原数组不受影响)

// 2、filter()
function  getInclude5(arr1, arr2) {
  return arr1.filter((item) => {
    return arr2.includes(item)
  })
}
console.log('filter', getInclude5([3,2,5,8,4,7,6,9], [1,0,0])) // []
console.log('filter', getInclude5([3,2,5,8,4,7,6,9], [9,0,0])) // [9]

总结:
也可使用map、some、every、forEach来操作返回符合要求的结果,甚至可以两层for循环也可实现,若是要求全包含(arr1=[3,5,8,4,7,6,9]; arr2=[8,6,9])像这种的就需要知道两个数组的长度了,具体场景具体解决。
补充一点:forEach允许改变原数据。

标签:console,包含,temp,JS,item,arr2,数组,arr1,log
From: https://www.cnblogs.com/ZYSZBD/p/16969226.html

相关文章

  • js 大文件分片上传处理
    ​ 前言文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好......
  • Java使用Steam流对数组进行排序
    原文地址:Java使用Steam流对数组进行排序-Stars-One的杂货小窝简单记下笔记,不是啥难的东西sorted()方法里传了一个比较器的接口Filefile=newFile("D:\\temp\\db_ba......
  • 【数据结构】二维树状数组
    一、二维树状数组二维树状数组,其实就是一维的树状数组上的节点再套个树状数组,就变成了二维树状数组了。constintN=1e3+10;inttr[N][N],n,m;#definelowbit(x......
  • 直播系统app源码,js操作在当前日期加减(天、周、月、年数)
    直播系统app源码,js操作在当前日期加减(天、周、月、年数)1.项目案例首先,我们创建个获取当前日期的变量nowDate,项目中需求是设置在当前时间的15天后做xxx事情,写一个方法 ......
  • com.alibaba.fastjson 对象转json剔除字段
    com.alibaba.fastjson对象转json剔除字段​​问题背景描述​​​​问题处理​​问题背景描述java代码保存数据到mysql的同时需要保存一份到es,由于对象字段很多,建两个实体类......
  • java-net-php-python-jsp汽车租赁管理系统计算机毕业设计程序
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • echarts map地图中绘制浙江省市区县乡镇多级联动边界下钻的最新geojson数据文件获取和
    目录EChartsMap地图的显示GeoJSON数据文件获取在ECharts中绘制浙江省的数据EChartsMap地图的显示ECharts支持地理坐标显示,专门提供了一个geo组件,在setOption中提供opti......
  • js实现轮播图(下面附有高清图)
    我所实现的和别的博主大大不太一样,我所采用的的是z-index方式以及浮动的方式,实现的轮播图实现的效果图为:html主要实现代码:<!DOCTYPEhtml><html><head><metacharset=......
  • js实现点名系统
    实现效果图为:<html><head><metacharset="UTF-8"><title></title><styletype="text/css">#p2{font-size:28px;/*margin:0pxauto;*......
  • jsp当中web程序的调试与排错
    常出现的有4中:1.常见错误:未启动Tomcat:2.常见错误:未部署Web应用:3.常见错误:URL输入错误:localhost可以使得127.0.0.1进行代替!!!4.常见错误:目录不能被引用:......