Set
本质上是一个构造函数,特点是创建了一个去重数组。
Set的方法
- Set.prototype.add(value):添加某个值,返回 Set 结构本身。
- Set.prototype.delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
- Set.prototype.has(value):返回一个布尔值,表示该值是否为Set的成员。
- Set.prototype.clear():清除所有成员,没有返回值。
- Set.prototype.keys():返回键名的遍历器。
- Set.prototype.values():返回键值的遍历器。
- Set.prototype.entries():返回键值对的遍历器。
- Set.prototype.forEach():使用回调函数遍历每个成员。 注意set没有键名,所以键值是一样的值。
1. set基本用法
let arr = [3, 5, 2, 2, 5, 5];
let arrString = 'ausiejsaasiduwq';
let arrSet = new Set(arr);
let strSet = new Set(arrString);
console.log(arrSet); // Set(3) { 3, 5, 2 }
console.log(strSet); // Set(9) { 'a', 'u', 's', 'i', 'e', 'j', 'd', 'w', 'q' }
arrSet.add(4);
arrSet.delete(3);
arrSet.has(5);
strSet.clear();
console.log(arrSet); // Set(3) { 5, 2, 4 }
console.log(strSet); // Set(0) {}
2. set结合扩展运算符(...)的用法
let arr = [3, 5, 2, 2, 5, 5];
let arrString = 'ausiejsaasiduwq';
let arrSet = [...new Set(arr)];
let strSet = [...new Set(arrString)];
console.log(arrSet); // [ 3, 5, 2 ]
console.log(strSet);
//['a', 'u', 's','i', 'e', 'j','d', 'w', 'q']
3. 去重排序
冒泡排序
let arr = [3, 5, 2, 2, 5, 5];
let arrString = 'ausiejsaasiduwq';
let arrSet = [...new Set(arr)];
let strSet = [...new Set(arrString)];
let arrSort = arrSet.sort((x,y)=>{
console.log(x,y)
if (x < y) {
return -1;
}
if (x > y) {
return 1;
}
return 0;
});
let strSort = strSet.sort((x,y)=>{
// 字符串会以ASCII的大小比较所以进行统一处理
str1 = x.toUpperCase();
str2 = y.toUpperCase();
if (x < y) {
return -1;
}
if (x > y) {
return 1;
}
return 0;
});
console.log(arrSort); // [ 2, 3, 5 ]
console.log(strSort); // ['a', 'd', 'e','i', 'j', 'q','s', 'u', 'w']
Map
本质上是键值对的集合,但是传统上只能用字符串当作键。
Map的方法
- Map.prototype.set(key, value):设置键名key对应的键值为value,然后返回整个 Map 结构。如果key已经有值,则键值会被更新。
- Map.prototype.get(key):读取key对应的键值,如果找不到key,返回undefined。
- Map.prototype.has(key):返回一个布尔值,表示某个键是否在当前 Map 对象之中。
- Map.prototype.delete(key):删除某个键,返回true。如果删除失败,返回false。
- Map.prototype.clear():清除所有成员。
- Map.prototype.keys():返回键名的遍历器。
- Map.prototype.values():返回键值的遍历器。
- Map.prototype.entries():返回键值对的遍历器。
- Map.prototype.forEach():使用回调函数遍历每个成员。
map基本用法
let obj = {'str1':1,'str2':2};
let map = new Map(Object.entries(obj));
map.set('str3',3)
console.log(Object.entries(obj)); // [ [ 'str1', 1 ], [ 'str2', 2 ] ]
console.log(map); // Map(3) { 'str1' => 1, 'str2' => 2, 'str3' => 3 }
console.log(map.entries());
// [Map Entries] { [ 'str1', 1 ], [ 'str2', 2 ], [ 'str3', 3 ] }