如何删除重复数组在多维数组中的关键位置可能不相同的JavaScript?

jmp7cifd  于 2023-02-07  发布在  Java
关注(0)|答案(2)|浏览(137)
let originalArray = [
  ["A", "B", "C"],
  ["B", "A", "C"],
  ["D", "E", "F"]
];

let uniqueArray = originalArray.filter((item, index, self) => { 
    return index === self.findIndex((t) => JSON.stringify(t) === JSON.stringify(item)); 
}); 

console.log(uniqueArray);

我想要这个结果:

[
 ["A", "B", "C"],
 ["D", "E", "F"]
];

要从JavaScript中的多维数组中删除重复项(其中键位置可能不同),可以组合使用**Array.prototype.map()Array.prototype.filter()Array.prototype.includes()**来创建仅包含唯一元素的新数组。

eblbsuwk

eblbsuwk1#

可以将对象与Array.prototype.reduce一起使用,将排序值的字符串化版本存储为该高速缓存。

let originalArray = [
  ["A", "B", "C"],
  ["B", "A", "C"],
  ["D", "E", "F"]
];

let uniqueArray = Object.values(originalArray.reduce((acc, cur) => {
    const data = [...cur].sort();
    const key = JSON.stringify(data);
    acc[key] = acc[key] ?? cur;
    return acc; 
}, {})); 

console.log(uniqueArray);
irlmq6kh

irlmq6kh2#

在将内部数组插入到Set中进行筛选之前,可以先对它们进行sort

let originalArray = [
  ["A", "B", "C"],
  ["B", "A", "C"],
  ["D", "E", "F"]
];
let vis = new Set;
let res = originalArray.filter(x => {
  const str = JSON.stringify([...x].sort());
  return !vis.has(str) && vis.add(str);
});
console.log(res);

相关问题