2015-11-29 40 views
0

如何比較多個數組獲得數組結果只有在每個數組與javascript的同時?考慮性能如何比較多個數組獲取結果只有在每個數組與JavaScript的同一時間?

var a = [10], 
    b = [], 
    c = [10], 
    d = [10]; 

get [] 

var a = [10], 
    b = [10], 
    c = [10], 
    d = [10]; 

get [10] 

var a = [0, 1, 2], 
    b = [1, 2], 
    c = [0, 1, 2], 
    d = [0, 1, 2, 3]; 

get [1, 2] 
+0

請詳細說明您的問題。 –

+2

[在javascript中最簡單的數組交集的代碼](http://stackoverflow.com/q/1885557/218196)和[others](https://stackoverflow.com/search?q= [javascript] +十字路口+陣列)。 –

+0

有人可以修復第一句話嗎?我不確定它的含義,但絕對不是正確的英文。 – Rudie

回答

1

該溶液的特徵在於用於獲得交叉點爲兩個陣列(intersection)和一組陣列(intersections)非破壞性的算法。

function intersection(a, b) { 
 
    var array = []; 
 
    a.forEach(function (aa) { 
 
     b.some(function (bb) { 
 
      if (aa === bb) { 
 
       array.push(aa); 
 
       return true; 
 
      } 
 
     }); 
 
    }); 
 
    return array; 
 
} 
 

 
function intersections(array) { 
 
    return array.reduce(function (a, b) { 
 
     return intersection(a, b); 
 
    }); 
 
} 
 

 
document.write('<pre>' + JSON.stringify(intersections([[10], [], [10], [10]]), 0, 4) + '</pre>'); 
 
document.write('<pre>' + JSON.stringify(intersections([[10], [10], [10], [10]]), 0, 4) + '</pre>'); 
 
document.write('<pre>' + JSON.stringify(intersections([[0, 1, 2], [1, 2], [0, 1, 2], [0, 1, 2, 3]]), 0, 4) + '</pre>');

1

_.intersection是單向的:)

_.intersection([1, 2], [4, 2], [2, 1]); 
// → [2] 

Lodash。如果您的問題的目的更多的是實用性而非學術性原因,這很有用。除非僅用於學習目的,否則不需要重新發明輪子。

相關問題