一个数组的元素是否被另一个数组全包含 三行代码搞定!
Posted 李金宵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个数组的元素是否被另一个数组全包含 三行代码搞定!相关的知识,希望对你有一定的参考价值。
废话不说,先上代码再解释:
数组1.every(item =>{
return 数组2.indexOf(item.id) >= 0
})
可以声明一个变量来判断是否包含。例:
let status = 数组1.every(item =>{
return 数组2.indexOf(item.id) >= 0
})
如果status 返回 true ; 则=>【数组1】里面的元素在【数组2】里面都有
如果status 返回 false ; 则=>【数组1】里面的元素在【数组2】不完全有,甚至一个都没有
解析:
数组的every,是表示数组中每一项都符合判断条件,会返回true ; 只要有一个不符合的,就会返回false;
案例的意思就是:【数组1】里面所有的元素都满足 【数组2.indexOf(item.id) >= 0】的条件;而【数组2.indexOf(item.id) >= 0】的条件表示 【item.id】在【数组2】中都能找到对应的index值(下标索引值);既然【数组1】中所有【元素】在【数组2】中都能找到【下标索引值】,证明:
【数组1】中所有元素,在【数组2】中都能找到 =>【数组2】包含【数组1】
原理等同于:
for(let n=0;n<数组1.length ; n++){
if( 数组2.indexOf(数组1[n]) ===-1 ){
return false
}
}
遍历【数组1】,一旦【数组1】的数据(元素)在【数组2】中找不到,就返回false;
=> 【数组2】不完全包含【数组1】
以上是关于一个数组的元素是否被另一个数组全包含 三行代码搞定!的主要内容,如果未能解决你的问题,请参考以下文章