JS——如何快速判断数组包含另一个数组

1 篇文章 0 订阅
1 篇文章 0 订阅
ES6可用方法:
  1. find(返回第一个符合条件的数组元素,没找到则返回undefined)
// 1、find()
function  getInclude1(arr1, arr2) {
  let temp = []
    for (const item of arr2) {
	  arr1.find(i => i === item) ? temp.push(item) : ''
	}
  return temp
}
console.log('find1', getInclude1([3,2,5,8,4,7,6,9], [1,0,0])) // []
console.log('find2', getInclude1([3,2,5,8,4,7,6,9], [9,6,7])) // [9, 6, 7]

上述是可以返回所包含的元素组成的数组,即两个数组的交际,如果只需要判断是否包含,可直接判断temp的length返回布尔值。

  1. findIndex (跟find类似,返回值不一样,findIndex找到则返回元素下标,否则返回-1)
// 2、findIndex()
function  getInclude2(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', getInclude2([3,2,5,8,4,7,6,9], [1,0,0])) // false
console.log('findIndex2', getInclude2([3,2,5,8,4,7,6,9], [9,0,0])) // true

上述结果如果包含则返回的是布尔值,也可返回包含的具体元素,即交集,也可返回包含元素的下标。

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

上述方法也可将包含的元素下标返回

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

同理也可以将filter和indexOf相结合使用

总结:

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

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值