//
console.log(“foreach 循环”);
//数组的遍历
console.log(“JS数据类型的学习”);
//var永不销毁,所以用let定义数据,便于垃圾回收
console.log(“数组forEach循环”);
let a = [‘A’, ‘B’, ‘C’];
a.forEach(function (element,index,array) {
// element: 指向当前元素的值
// index: 指向当前索引
// array: 指向Array对象本身
console.log(element,index,array);
});
//for of循环:与java中的foreach类似:
console.log(“数组for of循环”);
for (let x of a) {
console.log(x); // ‘A’, ‘B’, ‘C’
}
//Set
console.log(“Set的知识点”);
//Set与Array类似,但Set没有索引,因此回调函数的前两个参数都是元素本身
//Set的两种初始化
//new Set(“bsh”,“vv”);这种情况下,只会依次添加第一个元素(无论单双引)"bsh"的单个字符,"vv"被丢弃
//new Set([“1”,“2”,“3”,“4”]);这种情况则会全部添加
let set1=new Set(“bsh”,“vv”);
let set2=new Set([“1”,“2”,“3”,“4”]);
//Set的方法
//添加元素
set1.add(set2)
set1.add(“a”);
set1.add(“b”);
set1.add(“c”);
set1.add([“a”,“d”,“e”]);
//查询是否存在
console.log(“Set的查询”);
console.log(set1.has(“a”))
//删除
set1.delete(“a”)
console.log(set1.has(“a”))
//清除数据,在此处反复实现得知,添加的单个元素,添加的数组和添加的Set是有区别的,会把数组和Set当成一个元素
console.log(“Set的数据遍历-验证”);
for(v of set1.keys()){
console.log(v);
}
console.log(“clear()前的长度”,set1.size)
set1.clear();
//长度=>.size没有括号
console.log(“clear()后的长度”,set1.size)
//取值,因为set相当于只有键的map,所有它的keys()和values()都是一样的,entries()代表两者
console.log(“Set的for of遍历”);
//for(v of set2.keys()){
//console.log(v);
//}
//for(v of set2.values()){
//console.log(v);
//}
for([k,v] of set2.entries()){
console.log(k,v);
}
//Set 和 WeakSet 表示一组对象。WeakSet 相当于Set的简化版,省略了很多方法,更省内存
console.log(“Set的forEach遍历-function”);
set2.forEach(function (element, sameElement, set) {
console.log(element,sameElement,set);
});
console.log(“Set的forEach遍历-箭头函数”);
set2.forEach((k,v)=>{console.log(k,v)})
//Map
console.log(“Map的知识点”);
//Map的两种初始化
let map1=new Map();
let map2=new Map([[1, ‘x’], [2, ‘y’], [3, ‘z’]]);
//Map的方法 不能set元组,且set-Map会显示undefined
//之所以会出现undefined,是因为map()方法创建了一个新数组,但新数组并不是在遍历完map1后才被赋值的
//添加
map1.set(“name”,“zhangsan”);
map1.set(“age”,“18”);
map1.set(map2);
//遍历
console.log(“Map的遍历1”);
map1.forEach((k,v)=>{console.log(k,v);})
console.log(“Map的遍历2”);
map2.forEach(function (value, key, map) {
console.log(value,key,map);
});
//Map和WeakMaps之间的差别在于,在前者中,对象键是可枚举的。
//枚举,enum类中有多个但有限的实例
//set(‘key’,value)->添加新的key-value,has(‘key’)->是否存在key,get(‘key’)->得到此key的value,delete(‘key’)->删除键值对
console.log(“Map的遍历3”);
//Map的回调函数参数依次为value、key和map本身:
let m = new Map([[1, ‘x’], [2, ‘y’], [3, ‘z’]]);
m.forEach(function (value, key, map) {
console.log(value,key,map);
});
//Map与Set类似的方法很多,例如:clear delete entries forEach get has keys set size values 等,此处不一一列举
}
//