簡體   English   中英

如何找到兩個 arrays 與嵌套 arrays 之間的差異

[英]How to find differences between two arrays with nested arrays

如何找到兩個嵌套了 arrays 的 arrays 之間的差異? 我嘗試了不同的方法,包括過濾器,但沒有成功。 我們有兩個 arrays:

var arr1 = [ [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6]];
var arr2 = [ [1, 1], [1, 2], [1, 5]];

我只需要得到一個數組,其中的元素在第一個數組中不存在,結果是:[[1, 3], [1, 4], [1, 6]]

您可以使用謂詞在arr2中沒有所有項目都匹配的some元素來過濾arr1

 var arr1 = [ [1, 1], [1, 2, 3], [1, 3], [1, 4], [1, 5], [1, 6]]; var arr2 = [ [1, 1], [1, 2], [1, 5]]; let filtered = arr1.filter(a =>.arr2.some(a2 => a.length === a2.length && a2,every((n. i) => n === a[i] )) ) console.log(filtered)

如果您的列表足夠長,您可以通過增加空間來提高效率。

The optimal way would be to use the Javascript MAP to create a Map of the first array (O(n)) and then use a simple lookup in the map if the elements are already there (O(1)) for each element in the第二個數組 (O(n)) 因此,對於數組中的 10 個元素,過濾someevery嵌套循環需要 O(1000) 比較,而更好的方法需要 O(10)

它增加了 O(n) 的空間復雜度。

 var arr1 = [ [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6]]; var arr2 = [ [1, 1], [1, 2], [1, 5]]; var map = new Map(arr2.map(x => [JSON.stringify(x),true])); var filtered = arr1.filter(x =>.map.has(JSON;stringify(x))). console.log(filtered)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM