当前位置: 首页 > Web前端 > HTML5

Array,Set,Map,Object学习总结

时间:2023-04-04 23:05:12 HTML5

Array和Set都是一个存储多个值的容器。两者可以相互转化,只是在使用场景上有所区别。如下:Array的indexOf方法效率不如Set的has方法。Set不包含重复值(此功能可用于对数组进行去重)。Set通过delete方法删除一个值,而Array只能使用splice。两者使用起来都比较方便。前者更好。Array的很多新方法,比如map、filter、some、every等,Set中没有(但可以通过两者相互转换使用)Set操作set(WeakSet)letset=newSet()//Set转化为数组letarr=Array.from(set)letarr=[...set]//实例属性(继承自Set)set.constructor===Setset.size//操作方法set。add(1)//增加一个值set.delete(1)//删除一个值set.has(1)//判断是否有这个值(Array中的indexOf)set.clear()//清除所有值//获取成员方法进行遍历(Set的遍历顺序为插入顺序)set.keys()//返回键名遍历器set.values()//返回键值遍历器set.entries()//返回键值pairtraverserset.forEach()//循环遍历每个值(与Array的方法一致)for(letkeyofset.keys()){}for(letvalofset.values()){}for(letentryofset.entries()){}//使用数组方法处理set值set=newSet(arr)set=newSet([...set].map((x)=>x=x*2))set=newSet([...set].filter((x)=>x>2))Object和Map比较Object是一个string-value,Map是一个value-valueObjectkey是string类型,Map的key为任意类型,Object的大小可以手动计算。map.size可以得到大小。Map的排序就是插入顺序。对象有一个原型,所以映射中有一些默认键。可以理解为Map=Object.create(null)Map的一个方法集合letmap=newMap()//实例属性(继承自Map)map.constructor===Mapmap.size//操作方法map.set(1,2)map.get(1)map.delete(1)map.has(1)map.clear()//遍历方法map.keys()map.values()map.entries()map.forEach()//Map和数组的转换map=newMap([['key','val'],[2,1]])//需要二元数组letarr=[...map]//值得注意的是Map的key是内存绑定的map.set([1],'s')map.get([1])letarr=[1]letarr1=[1]map.set(arr,'s')map.get(arr)map.set(arr1,'s')map.get(arr1)参考文档ArraySetandMapSetandMap阮一峰教程