实现两个数组包含或相同

判断两个数组互相包含:

isContained(a, b) { // 判断两个数组包含关系
      if (!(a instanceof Array) || !(b instanceof Array)) return false
      if (a.length < b.length) return false
      var aStr = a.toString()
      for (var i = 0, len = b.length; i < len; i++) {
        if (aStr.indexOf(b[i]) === -1) return false
      }
      return true
    },

判断两个数组相同:

isSame (a, b) {
  if (a.length !== b.length) return false

  let c = b.slice()
  // 在可以提前退出的情况下不要使用forEach
  for (let i = 0, len = a.length; i < len; i++) {
    let j = c.indexOf(a[i])
    if ( j === -1) return false
    c.splice(j, 1) // 删除已经匹配的元素,可以缩短下次匹配的时间
  }
  return true
}
isSame([1, 2, 2], [1, 1, 2]) // false
isSame([1, 2, 2], [2, 1, 2]) // true

判断全相等价于判断其中一个不等:

isAllEqual(array){
    if(array.length>0){
       return !array.some(function(value,index){
         return value !== array[0];
       });   
    }else{
        return true;
    }
}

 

你可能感兴趣的:(实现两个数组包含或相同)