使用Javascript 陣列進行高效的集合差計算
計算兩個陣列之間的集合差可能是資料運算和集合論中的關鍵操作。在 Javascript 中,陣列作為主要資料結構,找到高效且優雅的方法來執行此任務至關重要。
一個簡單的方法是利用原生array.filter() 函數,如下所示:
<code class="js">var A = [1, 2, 3, 4]; var B = [1, 3, 4, 7]; var diff = A.filter(function(x) { return B.indexOf(x) < 0; });</code>
此方法利用indexOf() 函數來決定A 中的元素是否存在於B 中。如果不存在,則將該元素新增至產生的 diff 陣列。雖然簡單,但它的缺點是在 B 數組中對 A 的每個元素執行線性搜索,這可能會導致 O(n^2) 時間複雜度。
對於較大的數組,可以透過使用以下演算法:
<code class="js">var s = new Set(B); var diff = A.filter(function(x) { return !s.has(x); });</code>
對 S 使用集合可確保在恆定時間內執行成員資格測試,從而導致總體時間複雜度為 O(n)。
以上是如何在 Javascript 陣列中高效計算集合差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!