js如何獲取兩個陣列共有的元素

螞蟻小編發表於2017-03-16

有時候需要獲取兩個陣列元素共有的元素,也就是兩個陣列元素的交集,下面就分享一下能夠實現此功能的程式碼例項。

例項程式碼下:

[JavaScript] 純文字檢視 複製程式碼
Array.prototype.unique=function()
{
  var a=[]; 
  var l=this.length; 
  for (var i=0;i<l;i++)
  { 
    for(var j=i+1;j<l;j++)
    { 
      if(this[i]===this[j]) 
      {
         j=++i;
       } 
     } 
    a.push(this[i]); 
  } 
  return a; 
}
 
Array.prototype.intersect=function()
{
  if (!arguments.length) return []; 
  var a1 = this; 
  var a = a2 = null; 
  var n = 0; 
  while (n < arguments.length) 
  { 
    a = []; 
    a2 = arguments[n]; 
    var l = a1.length; 
    var l2 = a2.length; 
    for (var i = 0; i < l; i++) 
    { 
       for (var j = 0; j < l2; j++) 
       { 
         if (a1[i] === a2[j]) a.push(a1[i]); 
       } 
     } 
        a1 = a; n++; 
  } 
  return a.unique(); 
};
var theArray=[1,2,1,5,2,8,12,1];
var arr1=[5,8,8,2];
console.log(theArray.intersect(arr1));

以上程式碼可以輸出兩個陣列的交集,當然並不一定是兩個陣列,可以是任意多個陣列,只要給函式傳遞多個陣列引數即可。

相關文章