javascript - 如何以最小的复杂度从javascript中的数组中获取不匹配的数组值?

标签 javascript jquery arrays polymer

嗨,我是 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/

相关文章:

c# - 将字节数组上传到 HTTP 服务器

javascript - 我真的可以在上传表单中使用这段代码吗?

javascript - HTML5 Canvas 上的drawImage 不起作用

jquery - 缩放/展开元素的最佳方式: CSS or jQuery

arrays - 给定一个源和一个最终数组,找到在小于二次时间复杂度的情况下从源生成最终数组的跳数

arrays - 将 NSTableView 中显示的数组行传递到 Swift 中的另一个数组

javascript - 打印时不在弹出窗口中显示打印 View

javascript - 防止跳回到屏幕顶部 jQuery animate

jquery - 如何在 div 中定位元素,使它们随 div 移动而移动

javascript - 通过多个名称查找元素 jQuery