JS中的Set与Map

打印 上一主题 下一主题

主题 810|帖子 810|积分 2430

Set   Map  后面跟的都必须是可迭代的对象

Set

Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
add( )  has( )  size   delete( )
  1. let myset = new Set()
  2.     //添加
  3.     console.log(myset.add(1));//{1}
  4.     console.log(myset.add(6));// {1, 6}
  5.     let p = { a: 1, b: 2 }
  6.     console.log(myset.add(p));// { 1, 6, { a: 1, b: 2  } }
  7.     //查找
  8.     console.log(myset.has(1));//true
  9.     console.log(myset.has(5));//false
  10.     //长度
  11.     console.log(myset.size);//3
  12.     //删除
  13.     myset.delete(1)
  14.     console.log(myset); //{ 6, { a: 1, b: 2 } }
复制代码
 new Set(可迭代的对象)
  1. let arr = new Set([1,2,3,4])
  2.     console.log(arr);// {1, 2, 3, 4}
  3.     let str=new Set('asdfg')
  4.     console.log(str);// {'a', 's', 'd', 'f', 'g'}
  5.    let arr1=[4,5,6,8,7]
  6.      let arr2=new Set(arr1)
  7.      console.log(arr2);//{4,5,6,8,7}
复制代码
 因为Set是存储任何类型的唯一值,所有可以直接数组去重
  1. let arr1 = [4, 5, 4, 8, 7]
  2.     let arr2 = [...new Set(arr1)]
  3.     console.log(arr2);//[4,5,8,7]
复制代码
 Map

Map与Object类似
Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者基本类型)都可以作为一个键或一个值。
存储数据到 Map 中的方式是使用 set(key, value) 方法。
使用 Map 类型和 new 关键字来创建 Map:
不仅仅是数组,任何具有 Iterator 接口、且每个成员都是一个双元素的数组的数据结构 所以 Set Map 数组 都可以创建 Map
创建空map 再添加
  1. let map1 = new Map();
  2. map1.set('123',123)
复制代码
数组创建Map
  1. const m2 = new Map([['baz', 3]]);
复制代码
set 创建Map
  1. const set = new Set([
  2.   ['foo', 1],
  3.   ['bar', 2]
  4. ]);
  5. const m3 = new Map(set);
  6. console.log(m3);//{'foo' => 1, 'bar' => 2}
复制代码
map 创建新的map

注意 m3 === m2 //false
  1. const m3 = new Map(m2);
复制代码
Map 增 删 查 清空

.set( )  .delete( )  .has( )   .clear( )
  1. const map = new Map();
  2.   map.set('foo', true);
  3.   map.set('bar', false);
  4. console.log(map.size);//2
  5.   console.log(map);//{'foo' => true, 'bar' => false}
  6.   map.set(1,22)
  7.   console.log(map)//{'foo' => true, 'bar' => false, 1 => 22}
  8.   map.set(1, 33)
  9.   console.log(map)//{'foo' => true, 'bar' => false, 1 => 33}
  10. console.log(map.get(1));//33
  11. console.log(map.get(5));//undefined
  12. console.log(map.has(1));//true
  13. console.log(map.has(2));//false
复制代码

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曂沅仴駦

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表