检查array1中的item是否存在于array2中

check if item in array1 exist in array2

本文关键字:array2 存在 是否 array1 中的 item 检查      更新时间:2023-09-26

使用数组时遇到一些问题。我基本上想遍历array1,检查该数组中的哪些元素存在于array2中,然后返回一个包含所有匹配项的新数组。

怎么做呢?

这段代码是纯javascript的,没有带库

var fruits1 = ["Banana", "Pear"];
var fruits2 = ["Banana", "Orange", "Apple", "Mango"];
var fruits3 = [];
for (i=0; i< fruits1.length; i++)
   if (fruits2.indexOf(fruits1[i]) > -1)
     fruits3.push(fruits1[i]);

如果您有不同长度的未排序数组,这也可以工作。

创建一个函数叫做intersect,例如:

function intersect(arr1,arr2){
    //We need to know which array is the shortest to avoid useless loops
    if(arr2.length<arr1.length){
        var temp = arr1;
        arr1 = arr2;
        arr2 = temp;
    }
    // Now, we are sure arr1 is the shortest
    var result = [];
    for(var i = 0; i<arr1.length; i++){
        if(arr2.indexOf(arr1[i])>-1) result.push(arr1[i]);
    }
    return result;
}

该函数接受2个数组作为参数,无需考虑它们的顺序。

然后你可以调用它并查看结果:

var arr1 = [1,2,3,4,5];
var arr2 = [4,5,6,7,8,9,10,12];
var inter = intersect(arr1,arr2);
alert(inter);

JS Fiddle Demo

香草Javascript

for(var x=0;x<array1.length;x++){
    for(var y=0;y<array2.length;y++){
        if ( array1[x] == array2[y] ) array3.push(array1[x]);
    }
}
Jquery版本

$.each(array1, function(k,v){
    $.each(array2, function(k2,v2){
       if ( v == v2 ) array3.push(v2);
    });
});