Lodash方法检查数组中的所有元素是否都在另一个数组中

时间:2016-09-09 10:33:55

标签: javascript underscore.js lodash

我有2个字符串数组。我想确保第二个数组的所有元素都在第一个。我使用Lodash / Underscore来做这样的事情。检查一个astring是否在数组中时很容易:

var arr1 = ['a', 'b', 'c', 'd'];
_.includes(arr1, 'b');
// => true

但是当它是一个数组时,我无法看到当前的方法来做到这一点。我所做的是:

var arr1 = ['a', 'b', 'c', 'd'];
var arr2 = ['a', 'b', 'x'];

var intersection = _.intersection(arr1, arr2);

console.log('intersection is ', intersection);

if (intersection.length < arr2.length) {
    console.log('no');
} else {
    console.log('yes');
}

小提琴是here。但它相当啰嗦。是否有内置的Lodash方法?

1 个答案:

答案 0 :(得分:2)

您可以使用_.xor来表示对称差异,并将长度作为检查。如果length === 0,则两个数组都包含相同的元素。

var arr1 = ['a', 'b', 'c', 'd'],
    arr2 = ['a', 'b', 'x'];

console.log(_.xor(arr2, arr1));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>