一个数组的元素是否被另一个数组全包含 三行代码搞定!

废话不说,先上代码再解释:

  数组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】
 
 
posted @ 2020-07-07 18:18  HandsomeGuy  阅读(720)  评论(0编辑  收藏  举报