子集问题最后返回的结果是二维数组
- 🤔,
[] !== [];{}!=={};2===2
,为什么捏?- [] 与 [] 存储的内存地址不同,所以 !==
- 那一维数组的去重方法在二维数组这里是不适用的
文章目录
1-1 可以去重的方法:
<script>
var duplicate = function (arr) {
// 法一:es6
let res = new Map();
arr.forEach((item) => {
item.sort((a, b) => a - b);
res.set(item.join(), item);
});
return Array.from(res.values());
// 法二:
// let res = {};
// arr.forEach((item) => {
// item.sort((a, b) => a - b);
// res[item] = item;
// });
// return Object.values(res);
};
const arr = [
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[2, 3, 4, 5],
[6, 6, 6, 6],
];
console.log(duplicate(arr));
</script>
1-2 通过控制台测试不可以去重的方法[一维数组的去重方法]:
-
console.log([[1],[2],[3]].includes([1])) // false
- includes去重不能使用
-
[] === [] // false
- 两个for嵌套后splice不能使用
-
console.log([[1],[2],[3]].indexOf([1])) // -1
- indexOf去重不能使用
-
(...new Set([],[])) // [[],[]]
- 利用set与map的has去重也不可行
-
in运算符惊到了我了!!!
console.log([1] in [[1],[2],[3]]) // true
console.log([1,2] in [[1,2],[2]]) // false???,玩啥呢,整蒙了