JS中的数据结构简单学习

//

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 等,此处不一一列举

}
//

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值