let mirror_arr=[ [1,2],[3,2],[1,4],[8,1],[5,4],[2,1],[3,5],[1,8],[3,2],[2,3] ]
filtered_mirror=[ [1,2],[3,2],[1,4],[8,1],[5,4],[3,5] ];
该算法过滤掉所有镜像。例如,[1,2]
是[2,1]
的镜像,因此将通过移除镜像来过滤它。有什么简短的方法在Javascript中做到这一点吗?谢谢你的阅读:)我的相互依赖的解决方案在这里,我几乎解决了它。只是我必须删除重复的。
我假设您不想要副本,因为您在预期输出中没有第二个[3,2]
。从你的代码中可以看出你对Set和JSON很熟悉。stringify .
let mirror_arr = [ [1,2],[3,2],[1,4],[8,1],[5,4],[2,1],[3,5],[1,8],[3,2],[2,3] ];
let filtered = [];
let found_set = new Set();
for(let i = 0; i < mirror_arr.length; i++) {
let item = mirror_arr[i];
let string_item = JSON.stringify(item);
if(!found_set.has(string_item)) {
filtered.push(item);
found_set.add(string_item);
found_set.add( JSON.stringify([...item].reverse()) );
}
}
console.log(JSON.stringify(filtered));
.as-console-wrapper { max-height: 100% !important; top: 0; }