js中Set和Map
2021-01-17 17:13
标签:update 添加 去重处理 支持 列表 唯一性 下标 只读 不重复 一.Set 无重复列表类型 2.使用方法: 2)存储数据(不能重复) 和数组对比 3.遍历 2)for of 按照元素遍历 二.map 是一种有长度的键值对数据类型 支持方法 遍历方法 2.for of js中Set和Map 标签:update 添加 去重处理 支持 列表 唯一性 下标 只读 不重复 原文地址:https://www.cnblogs.com/94-Lucky/p/13362600.htmljs中除了有我们常见的五种数据结构,还有Set和Map两种数据类型。
特点:
1.没有下标,不是按照下标存储,但是是有序的,因此不能使用下标循环遍历
2.没有重复元素,任何元素存在唯一性,因此可以用来作去重处理,存储不重复的数据,
3.插入速度和删除速度非常快,遍历查找速度也非常快,但是略低于键值对类型。
4.支持方法:add(添加) delete(删除) has(查找) forEach(遍历)
属性: size 长度,只读的,没有length,
1)数组去重var arr=[1,3,5,7,2,4,3,5,1,2,6,5,7,8,9,1,2,4,3,5,7,9];
arr=Array.from(new Set(arr));
console.log(arr);
//数组存储
var manager={
list:[],
add(elem){
if(this.list.indexOf(elem)>-1) return; //判断重复
this.list.push(elem);
},
remove(elem){
var index=this.list.indexOf(elem);
if(index
1)forEach var a=new Set([1,2,3,4,5]);
a.forEach(function(value1,value2,a1){
console.log(value1,value2,a1); //相当于对象的key和value,只是set中的key和value相等
})
var a=new Set([1,2,3,4,5]);
for(let value of a){
console.log(value);
}
特点
1.hashMap 键值对的数据类型 map对象是关联型的对象,类似php中关联型的数组结构
2.具备数组的长度紧密型,又具备对象的键值对方法
3.它的获取,删除,查询,遍历速度很快
4.任何数据类型都可以作为键进行存储,对象存储用的是引用地址进行存储的
var map=new Map();
map.set("name","morty"); //1.添加元素
map.set("age",27);
map.delete("name"); //2.删除键名(删除元素)
console.log(map)
//map.clear(); //3.清除掉所有数据
console.log(map.has("age")); //4.判断某个键是否存在 返回布尔值
console.log(map.get("age")) //5.获取某个键的值 27
console.log(map.values());// 6.获取所有值的列表 {"morty", 27}
console.log(map.keys()); // 7.获取所有键的列表 {"name", "age"}
1.forEach map.forEach(function(value,key,map){ //键值 键 原对象
console.log(value,key);
})
1)
for(let key of map.keys()){ //遍历键
console.log(key);
}
2)
for(let value of map.values()){ //遍历键值
console.log(value);
}
3)
for(let arr of map.entries()){ //遍历每个元素 返回多个数组,每个元素一个数组
console.log(arr);
}
for(let arr of map.entries()){
console.log(arr[0],arr[1]); //获取每个元素的键和键值
}