查找另一个数组中是否存在任何数组元素

时间:2017-02-03 12:41:26

标签: javascript arrays lodash

在我的javascript代码中,我有以下两个数组,

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

我想知道arr2中是否存在arr1的任何元素。在上述情况下,它存在。

是的,通过迭代可以很容易地找到它。但我正在寻找一种更简单的方法。如果有任何lodash函数,那也很有用。提前致谢

4 个答案:

答案 0 :(得分:3)

您可以使用Array.prototype.every方法结合Array.prototype.indexOf

轻松检查



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

console.log( arr2.every(el => arr1.indexOf(el) > -1) )




UPD。更正:我把这个问题读作"如果以上答案的每个元素都会做到。#34; 。如果"如果有任何元素" ,您需要使用Array.prototype.some而不是every



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

console.log( arr2.some(el => arr1.indexOf(el) > -1) )




答案 1 :(得分:2)

您可以使用some返回true/falseintersection,它们会在两个数组中找到相同的元素。

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

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

使用普通js,您也可以使用someincludes

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

var result = arr1.some(e => arr2.includes(e))
console.log(result)

答案 2 :(得分:1)

您可以使用文档here

中的_.intersection

交集返回数组中的元素

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

这是小提琴https://jsfiddle.net/W4QfJ/3897/

答案 3 :(得分:0)

您可以在交叉变量上获取公共元素。

var intersection = $.grep(arr1 , function(element) {
    return $.inArray(element, arr2) !== -1;
});

console.log(intersection);