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

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允许改变原数据。

posted @   左手倒影ZY  阅读(6942)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示