如何判断一个数组是不是包含另一个数组

判断数组a是否包含数组b

let a = [2,3,4,5,6,7,8,9,10]
let b = [2,3]
let c = [1]
a中应该是包含b的,但a不包含c

从网上找了几个方法都是转成字符串查找,这样 10中含有1就会提示包含,显然不是我想要的结果,请问这种该怎么写呢?

阅读 18.1k
7 个回答
let a = [2, 3, 4, 5, 6, 7, 8, 9, 10];
let b = [2, 3];
let c = [1];

function includes(arr1: any[], arr2: any[]) {
  return arr2.every(val => arr1.includes(val));
}

console.log(includes(a, b));
console.log(includes(a, c));
let a = [2, 3, 4, 5, 6, 7, 8, 9, 10];
let b = [2, 3];
let c = [1];
function isIncludes(parentArr, childrenArr) {
    let tempArrLength = Array.from(new Set([...parentArr, ...childrenArr])).length
    return tempArrLength === parentArr.length || tempArrLength === childrenArr.length
}
console.log(isIncludes(a, c))   // false
console.log(isIncludes(a, b))   // true

b.every(function(item){

return a.some(function(sub){
    return sub == item;
});

});

var a = [2,3,4,5,6,7,8,9,10]
var b = [2,3]
var c = [1]

var findOne = function (haystack, arr) {
    return arr.some(function (v) {
        return haystack.indexOf(v) >= 0;
    });
};

验证结果如下:
clipboard.png

`

let a = [1,2,3,4,5,6];
let b = [1,2,3,4,5,6,7];

/**
 * a是否被b包含
 * 分析
 *      1.b的长度小于a或者a的长度大于b,那么a肯定不会被b包含
 *      2.获取a的长度a_length
 *      3.获取a与b的并集c并去重处理,获取c的长度c_length,如果c_length == a_length ,则a被b包含
 * @param {Array} a //数组a
 * @param {Array} b //数组b
 */
function isPart (a, b) {
if(b.length < a.length || a.length > b.length) {
    return false;
} else {
    let c = b.filter(item => a.includes(item));

    if(a.length == c.length) {
        console.log('true');
    } else {
        console.log('false');
    }
}
}
isPart(a,b);

`

for(var i = 0; i< b.length; i++) {
   if(a.indexOf(b[i]) > -1 ){
        alert('存在')
   } else {
        alert('不存在')
  }
}
新手上路,请多包涵

var a = [2,3,4,5,6,7,8,9,10] 
var b = [2,3] 
a.find((item, index, arr)=>arr.slice(index, index + b.length).toString() === b.toString()) !== undefined

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题