set和map的使用

1.Set对象

Set对象是一些元素的集合(看到集合,我们就会联想到集合内的元素都是不重复),如果你在Set中添加已存在的元素,该元素不会被添加

说明:若添加的是对象或者数组,则是看添加的是否是指向同一地址,若不是指向同一块地址,则可以都添加进去

2.Set对象的方法

let set = new Set();
// add(value) 在对象尾部添加一个元素
set.add(1);
set.add(2);
console.log("add方法 " + set);

// clear() 移除对象内的所有元素
set.clear();
console.log("清除方法 " + set);

// delete(value) 移除对象中与这个值相等的元素
set.add(1);
set.delete(1);
console.log("移除某个元素 " + set);

// size 得到对象元素的个数
console.log("元素个数值: " + set.size);

// keys() 返回一个新的迭代对象, 对象中包含每个元素的键名
set.add(0);
set.add(1);
console.log("返回元素键名 " );
for(let value of set.keys()){
  console.log(value);
}
// values() 返回一个新的迭代对象,对象中包含每个元素的键值
console.log("返回元素键值 ");
for(let value of set.values()){
  console.log(value);
}

// forEach(fn) 为set对象中每个元素调用一次回调函数fn
console.log("遍历set对象:")
set.forEach(value => {
    console.log(value);
})

// entries() 返回一个新的迭代对象,包含每个元素的键名和键值对
console.log("返回元素的键名和键值对 ");
for(let value of set.entries()){
  console.log(value);
}
// has(value) 判断指定值是否在set对象中,返回布尔值
console.log("判断元素是否存在:" + set.has(1));

// 可以使用for of遍历循环
for(let value of set){
    console.log(value);
}

运行结果如下:

 

// new Set() 括号内可传入字符串,可将其转化为集合

let set = new Set("abcde");
set.forEach(value => {
    console.log(value);
})

console.log("-----------------------------");

// 括号内也可传入数组
let arr = [1,2,3];
set = new Set(arr);
set.forEach(value => {
    console.log(value);
})

console.log("-------------------------");
// Array.from()  可将set对象转成数组

let myArr = Array.from(set);
console.log(myArr);

运行结果如下:

 3.Map对象的方法

map对象和set对象的方法大致相同,map对象中的键值是有序的

// map对象没有add方法,而是有set方法

let map = new Map();
// set(key,value) 添加键名和键值
map.set('h',1);
map.set('d',2);
console.log(map);

运行结果如下:

 

// get(key) 根据键名返回键值

let map = new Map();

map.set('a',1);

console.log(map.get('a'));

运行结果如下:

// 使用数组来创建一个map对象

let arr = [[0,"zero"],[1,"one"]];
let map = new Map(arr);

console.log(map);

运行结果如下:

 NaN也可以作为Map对象的键,虽然NaN和任何值都是不相等的,但两个NaN作为键名来说是没有区别的,

var myMap = new Map();
myMap.set(NaN, "not a number");
 
myMap.get(NaN); // "not a number"
 
var otherNaN = Number("foo");  // otherNaN 为NaN
myMap.get(otherNaN); // "not a number"

4.Map的合并

var first = new Map([[1, 'one'], [2, 'two'], [3, 'three'],]);
var second = new Map([[1, 'uno'], [2, 'dos']]);
 
// 合并两个 Map 对象时,如果有重复的键值,则后面的会覆盖前面的,对应值即 uno,dos, three
var merged = new Map([...first, ...second]);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值