Set
ES6新推出的一种数据结构,存储的值是唯一的,不会重复,类似于Array的一种数据结构;这是与数组不相同的点;Set是集合,不能像数组用下标取值。
使用场景
1、数组去重
const a = [2,3,4,2,3,4];
// 实现1: set可以接收类数组的类型结构;再利用解构转为真正的数组;
const newA = [...new Set(a)]
// 实现2: 利用Array.from()可以将Set转为Array;
const newB = Array.from(new Set(a));
// newA: [2,3,4];
2、字符串去重;
const str = 'aasdsfsfs'
[...new Set(str)].join('')
// "asdf"
原理
往Set中推入的元素,Set是根据set的一种算法来进行确定唯一性,类似于精确匹配——===,除了对NaN的判断,set内部认为NaN是相等的;
API相关
const set = new Set();
set.add(1)
set.size();
set.delete(1);
set.clear();
set.has(1);
weakSet
weakSet和Set结构类似,区别有两点 1、weakSet中的数据只能是对象,不能是其他类型的值; 2、weakSet的引用是弱引用;垃圾回收机制不起作用; 3、没有size属性,不能对其实行遍历;
map
传统的object数据格式,健名只能是字符串,类似于一种hash的数据结构,但是实际情况下存在,object当做key值;所以map结构扩展了之前object对健名数据结构的约束
使用
new Map([])接收一个数组,数组里面是一一一个个键值对的描述;
const map = new Map([
['name','张三'],
['title','Auther'];
])
weakMap
weakMap同weakSet,健名只支持对象类型;其他两点类似;
学习到的知识点:
for of
for of 是循环可迭代对象的值,
let iterable = [3, 5, 7];
for (let i of iterable) {
console.log(i);
}
// 3,5,7;
for in
for...in 循环只遍历可枚举属性;一般对于对象的一个可枚举属性的遍历
function Person() {
this.color = 'red';
}
const tri = {
name: 'aa',
age: 12
};
Person.prototype = tri;
const obj = new Person();
for(let i in obj) {
if(obj.hasOwnProperty(i)) {
console.log(i)
}
}
// console: color;