对JS数组执行测试以查看其是否包含另一个值数组

时间:2018-09-20 22:32:12

标签: javascript arrays

我在此站点上找到了一些解决方案,例如Array.prototype.includes()和Array.prototype.indexOf()和jQuery.inArray()。

这些解决方案中的每一个都非常适合检查数组'x'中是否有单个值['x','y','z']

我的问题是:如何测试以确定数组中是否存在多个值。换句话说,数组X是否在数组Y中?

例如:

['a','e','f']中的['a','b','c','d','e','f','g']吗?结果:是。

['a','e','z']中的['a','b','c','d','e','f','g']吗?结果:错误。

编辑: 理想情况下,该解决方案可以追溯到IE10。

2 个答案:

答案 0 :(得分:2)

这很简洁,可以满足您的要求

const array1 = ['a','b','c','d','e','f','g'];
const array2 = ['a','e','f'];
console.log(array2.every(currentValue => array1.includes(currentValue)));

答案 1 :(得分:1)

前三行之后的所有内容仅用于测试并演示如何使用此功能。一种情况是正确的,另一种情况是错误的。

Array.prototype.containsAll = function(values) {
  return values.every((val) => this.indexOf(val) !== -1);
}

var array = ['a','b','c','d','e','f','g'];
var testA = ['a', 'e', 'f'];
var testB = ['a', 'e', 'z'];
var testC = ['x', 'a'];

var res = array.containsAll(testA);
console.log(res);

var res = array.containsAll(testB);
console.log(res);

var res = array.containsAll(testC);
console.log(res);

为处理您的问题的数组原型添加了一个函数。