javascript 为什么我的集合不能移除重复元素

0aydgbwb  于 2023-01-16  发布在  Java
关注(0)|答案(3)|浏览(129)
let arr = new Set();
arr.add([1,1,1,1]);
arr.add([1,1,1,1]);
console.log(arr);

1.为什么产量是[[1,1,1,1],[1,1,1,1]]?
1.如果我想删除重复的元素,我应该取一些东西吗?(我想生成1,1,1,1

bxpogfeg

bxpogfeg1#

对象引用是不同的。类似于{}=={}返回false。
您可以使用JSON.stringify()来解决这个问题:

console.log([1,1,1,1,] === [1,1,1,1]);

let arr = new Set();
arr.add([1,1,1,1]);
arr.add([1,1,1,1]);

let ans = new Set([...arr].map(x => JSON.stringify(x)));
console.log(ans);
xxb16uws

xxb16uws2#

这将有助于恢复为以前的数组项

Array.from(new Set([[1,2,3,4], [1,2,3,4]].map(JSON.stringify)), JSON.parse);
kgsdhlau

kgsdhlau3#

这是因为你在集合里加了一个数组,SET不会深入比较你的元素和[1,1]!== [1,1],因为它们共享一个不同的引用。
我觉得你是想

arr = new Set();
arr.add(...[1, 1, 1, 1]);
arr.add(...[1, 1, 1, 1]);
console.log(arr);

相关问题