检查array1中是否存在array1中的项

时间:2014-06-26 15:09:00

标签: javascript

这里有一些数组问题。我基本上想循环遍历array1,检查array2中该数组中的哪些元素,然后返回一个包含所有匹配项的新数组。

如何做到这一点?

3 个答案:

答案 0 :(得分:0)

此代码使用纯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]);

答案 1 :(得分:-2)

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

创建一个名为 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

答案 2 :(得分:-3)

Vanilla 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);
    });
});