簡體   English   中英

如何以最小的復雜性從JavaScript中的數組獲取不匹配的數組值?

[英]How to get the unmatched array value from array in javascript with minimum complexity?

嗨,我是Java腳本的新手,我想要以下情況的解決方案。 我有一個多維坐標數組

var coordinateArr = [ [[45.56,45.57],[44.36,44.37]],
                      [[42.26,42.37],[42.46,42.57]],
                      [[41.56,41.57],[41.36,41.37],[41.26,41.27]] 
                    ];

我有另一個像多維數組

var  anotherArr = [ [[41.56,41.57],[41.36,41.37],[41.26,41.27]], 
                     [[42.26,42.37],[42.46,42.57]]
                  ]; 

現在我想從coordinateArr中提取不匹配的值

var unmatchedArr= [[[45.56,45.57],[44.36,44.37]]];

我怎樣才能做到這一點?

Javascript通過引用進行數組比較,因此除非一組是同一對象,否則您不能簡單地測試一組中的數組是否在另一組中。 您需要測試每個值,或者將數組轉換為按值進行比較的值,例如字符串。 對於數組,可以使用JSON.stringify 如果您使用anotherArr制作SetanotherArr可以使用Set.has()filter進行比較

 var coordinateArr = [ [[45.56,45.57],[44.36,44.37]], [[42.26,42.37],[42.46,42.57]], [[41.56,41.57],[41.36,41.37],[41.26,41.27]] ]; var anotherArr = [ [[41.56,41.57],[41.36,41.37],[41.26,41.27]], [[42.26,42.37],[42.46,42.57]] ]; let keys = new Set(anotherArr.map(JSON.stringify)) let filtered = coordinateArr.filter(arr => !keys.has(JSON.stringify(arr))) console.log(filtered) 

嘗試filter掉另一個數組中不include d的數組元素:

 var coordinateArr = [ [ [45.56, 45.57], [44.36, 44.37] ], [ [42.26, 42.37], [42.46, 42.57] ], [ [41.56, 41.57], [41.36, 41.37], [41.26, 41.27] ] ]; var anotherArr = [ [ [41.56, 41.57], [41.36, 41.37], [41.26, 41.27] ], [ [42.26, 42.37], [42.46, 42.57] ] ]; var unmatchedArr = coordinateArr.filter(e => !anotherArr.includes(e)); console.log(unmatchedArr); 

暫無
暫無

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

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