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)
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);
xxb16uws2#
这将有助于恢复为以前的数组项
Array.from(new Set([[1,2,3,4], [1,2,3,4]].map(JSON.stringify)), JSON.parse);
kgsdhlau3#
这是因为你在集合里加了一个数组,SET不会深入比较你的元素和[1,1]!== [1,1],因为它们共享一个不同的引用。我觉得你是想
arr = new Set(); arr.add(...[1, 1, 1, 1]); arr.add(...[1, 1, 1, 1]); console.log(arr);
3条答案
按热度按时间bxpogfeg1#
对象引用是不同的。类似于
{}=={}
返回false。您可以使用JSON.stringify()来解决这个问题:
xxb16uws2#
这将有助于恢复为以前的数组项
kgsdhlau3#
这是因为你在集合里加了一个数组,SET不会深入比较你的元素和[1,1]!== [1,1],因为它们共享一个不同的引用。
我觉得你是想