资讯专栏INFORMATION COLUMN

Array、Set、Map、Object学习总结

nicercode / 2732人阅读

摘要:和对比都是一个存储多值的容器,两者可以互相转换,但是在使用场景上有区别。可以理解为的方法集合实例属性继承自操作方法遍历方法和数组的转换要求双成员数组值得注意的是的键是跟内存绑定的参考文档和和阮一峰教程

Array和Set对比

</>复制代码

  1. 都是一个存储多值的容器,两者可以互相转换,但是在使用场景上有区别。如下:

Array的indexOf方法比Set的has方法效率低下

Set不含有重复值(可以利用这个特性实现对一个数组的去重)

Set通过delete方法删除某个值,而Array只能通过splice。两者的使用方便程度前者更优

Array的很多新方法map、filter、some、every等是Set没有的(但是通过两者可以互相转换来使用)

Set操作集合(WeakSet)

</>复制代码

  1. let set = new Set()
  2. // Set转化为数组
  3. let arr = Array.from(set)
  4. let arr = [...set]
  5. // 实例属性(继承自Set)
  6. set.constructor === Set
  7. set.size
  8. // 操作方法
  9. set.add(1) // 添加一个值
  10. set.delete(1) //删除一个值
  11. set.has(1) //判断是否有这个值(Array中的indexOf)
  12. set.clear() //清除所有值
  13. // 获取用于遍历的成员方法(Set的遍历顺序就是插入顺序)
  14. set.keys() // 返回键名的遍历器
  15. set.values() // 返回键值得遍历器
  16. set.entries() // 返回键值对的遍历器
  17. set.forEach() // 循环遍历每个值(和Array的方法一致)
  18. for (let key of set.keys()){}
  19. for (let val of set.values()){}
  20. for (let entry of set.entries()){}
  21. // 使用数组方法来处理set值
  22. set = new Set(arr)
  23. set = new Set([...set].map((x) => x = x * 2))
  24. set = new Set([...set].filter((x) => x > 2))
Object和Map对比

</>复制代码

  1. Object是字符串-值,Map是值-值

Object键为string类型,Map的键是任意类型

手动计算Object尺寸,Map.size可以获取尺寸

Map的排序是插入顺序

Object有原型,所以映射中有一些缺省的键。可以理解为Map=Object.create(null)

Map的方法集合

</>复制代码

  1. let map = new Map()
  2. // 实例属性(继承自Map)
  3. map.constructor === Map
  4. map.size
  5. // 操作方法
  6. map.set(1,2)
  7. map.get(1)
  8. map.delete(1)
  9. map.has(1)
  10. map.clear()
  11. // 遍历方法
  12. map.keys()
  13. map.values()
  14. map.entries()
  15. map.forEach()
  16. // Map和数组的转换
  17. map = new Map([["key","val"],[2,1]]) // 要求双成员数组
  18. let arr = [...map]
  19. // 值得注意的是Map的键是跟内存绑定的
  20. map.set([1], "s")
  21. map.get([1])
  22. let arr = [1]
  23. let arr1 = [1]
  24. map.set(arr, "s")
  25. map.get(arr)
  26. map.set(arr1, "s")
  27. map.get(arr1)
参考文档

Array
Set和Map
Set和Map阮一峰教程

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/52043.html

相关文章

  • ArraySetMapObject学习总结

    摘要:和对比都是一个存储多值的容器,两者可以互相转换,但是在使用场景上有区别。可以理解为的方法集合实例属性继承自操作方法遍历方法和数组的转换要求双成员数组值得注意的是的键是跟内存绑定的参考文档和和阮一峰教程 Array和Set对比 都是一个存储多值的容器,两者可以互相转换,但是在使用场景上有区别。如下: Array的indexOf方法比Set的has方法效率低下 Set不含有重复值(可以利...

    Miracle_lihb 评论0 收藏0
  • ArraySetMapObject学习总结

    摘要:和对比都是一个存储多值的容器,两者可以互相转换,但是在使用场景上有区别。可以理解为的方法集合实例属性继承自操作方法遍历方法和数组的转换要求双成员数组值得注意的是的键是跟内存绑定的参考文档和和阮一峰教程 Array和Set对比 都是一个存储多值的容器,两者可以互相转换,但是在使用场景上有区别。如下: Array的indexOf方法比Set的has方法效率低下 Set不含有重复值(可以利...

    MiracleWong 评论0 收藏0
  • 《深入理解ES6》笔记——Set集合与Map集合(7)

    摘要:常被用来检查对象中是否存在某个键名,集合常被用来获取已存的信息。返回一个布尔值,表示该值在中存在与否。集合存放对象的弱引用,当该对象的其他强引用被清除时,集合中的弱引用也会自动被垃圾回收机制回收,追踪成组的对象是该集合最好的使用方式。 Map和Set都叫做集合,但是他们也有所不同。Set常被用来检查对象中是否存在某个键名,Map集合常被用来获取已存的信息。 Set Set是有序列表,含...

    Charlie_Jade 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<