[英]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
制作Set
, anotherArr
可以使用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.