set 有序吗js_js中Set和Map

js中除了有我们常见的五种数据结构,还有Set和Map两种数据类型。

一.Set 无重复列表类型

特点:

1.没有下标,不是按照下标存储,但是是有序的,因此不能使用下标循环遍历

2.没有重复元素,任何元素存在唯一性,因此可以用来作去重处理,存储不重复的数据,

3.插入速度和删除速度非常快,遍历查找速度也非常快,但是略低于键值对类型。

4.支持方法:add(添加) delete(删除) has(查找) forEach(遍历)

属性: size 长度,只读的,没有length,

2.使用方法:

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);

2)存储数据(不能重复) 和数组对比

//数组存储

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<0) return;

this.list.splice(index,1);

},

update(){

for(var i=0;i

this.list[i].update();

}

}

}

//Set存储

var manager={

list:new Set(), //不需要进行存储

add(elem){

this.list.add(elem);

},

remove(elem){

this.list.delete(elem);

},

update(){

for(let value of this.list){

value.update();

}

}

}

//很明显在进行存储时比数组有优势

3.遍历

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相等

})

2)for of 按照元素遍历

var a=new Set([1,2,3,4,5]);

for(let value of a){

console.log(value);

}

二.map 是一种有长度的键值对数据类型

特点

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);

})

2.for of

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]); //获取每个元素的键和键值

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值