赞
踩
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);
运行结果如下:
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"
- 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]);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。