在我的javascript代码中,我有以下两个数组,
var arr1 = ['a', 'b', 'c'];
var arr2 = ['c', 'd'];
我想知道arr2
中是否存在arr1
的任何元素。在上述情况下,它存在。
是的,通过迭代可以很容易地找到它。但我正在寻找一种更简单的方法。如果有任何lodash函数,那也很有用。提前致谢
答案 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/false
和intersection
,它们会在两个数组中找到相同的元素。
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,您也可以使用some
和includes
var arr1 = ['a', 'b', 'c'];
var arr2 = ['c', 'd'];
var result = arr1.some(e => arr2.includes(e))
console.log(result)
答案 2 :(得分:1)
答案 3 :(得分:0)
您可以在交叉变量上获取公共元素。
var intersection = $.grep(arr1 , function(element) {
return $.inArray(element, arr2) !== -1;
});
console.log(intersection);