嗨,我是 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]]
];
现在我想从坐标Arr中提取不匹配的值,例如
var unmatchedArr= [[[45.56,45.57],[44.36,44.37]]];
我该怎么做?
最佳答案
Javascript 通过引用进行数组比较,因此您无法简单地测试一组数组是否在另一组中,除非它们是同一对象。您需要测试每个值或将数组转换为按值进行比较的内容(例如字符串)。对于数组,您可以使用 JSON.stringify。如果您从 anotherArr
中创建 Set
,则可以在 filter
中与 Set.has()
进行比较
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)
关于javascript - 如何以最小的复杂度从javascript中的数组中获取不匹配的数组值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53941776/