Filter out Mirrors in array


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; }

最新更新