Jef*_*eff 1 javascript arrays multidimensional-array
我想知道如何删除二维数组中包含相同元素的数组。
例如:
let 2dArr = [ [1, 2, 3],
[3, 2, 1],
[2, 4, 5],
[4, 5, 2],
[4, 3, 1] ];
Run Code Online (Sandbox Code Playgroud)
该数组将删除第二个和第四个元素,返回二维数组:
returnedArr = [ [1, 2, 3],
[2, 4, 5],
[4, 3, 1] ];
Run Code Online (Sandbox Code Playgroud)
到底如何才能做到这一点,保留二维数组?我只能想到循环遍历元素,通过排序比较元素,然后删除它们,但是如果删除元素,这会导致索引错误。
let twodArr = [
[1, 2, 3],
[3, 2, 1],
[2, 4, 5],
[4, 5, 2],
[4, 3, 1],
];
const set = new Set();
const result = twodArr.reduce((acc, curr) => {
const key = [...curr].sort((a, b) => a - b).join();
if (!set.has(key)) {
set.add(key);
acc.push(curr);
}
return acc;
}, []);
console.log(result);Run Code Online (Sandbox Code Playgroud)
2)您还可以使用过滤器:
let twodArr = [
[1, 2, 3],
[3, 2, 1],
[2, 4, 5],
[4, 5, 2],
[4, 3, 1],
];
const set = new Set();
const result = twodArr.filter((curr) => {
const key = [...curr].sort((a, b) => a - b).join();
return !set.has(key) ? (set.add(key), true) : false;
});
console.log(result);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
383 次 |
| 最近记录: |