ES6 Set结构的应用实例分析
本文实例讲述了ES6Set结构的应用。分享给大家供大家参考,具体如下:
Set类似于数组,但是成员的值都是唯一的,没有重复的值,实现了iterator接口
set的值不可重复,数组的值可以重复
letarr=[1,2,3,'5','5']; letst=newSet(arr); console.log(st);//可以通过set来去除数组的重复的值,返回的是一个伪数组 console.log(st.size);//4
set的add,delete,has,clear方法
简单的add与delete:
letst=newSet(); varu={name:'Joh'}; st.add(u); letbool=st.delete(u); console.log(bool);//true;
连续add与has的api:
letst=newSet(); varu={name:'Joh'}; varr={name:'Lily'}; st.add(u).add(r); letbool=st.delete(r); console.log(bool);//true console.log(st.has(r));//false console.log(st.has(u));//true;
clear清空set集合
letst=newSet(); varu={name:'Joh'}; varr={name:'Lily'}; st.add(u).add(r); st.clear(); console.log(st.size);//0
通过Array.from方法把类似数组结构的模型转化为数组
letarr=['xxx','yyyy','yyyy']; letnewArr=Array.from(newSet(arr)); console.log(Array.isArray(newArr));//true console.log(newArr);//["xxx","yyyy"]
Set原型上的Symbol.iterator和values是同一个值,可直接for-of遍历
console.log(Set.prototype[Symbol.iterator]===Set.prototype.values);//true letst=newSet(['xxx','yyyy','yyyy','John']); for(letkofst){ console.log(k);//依次输出xxxyyyyJohn可以直接遍历,兼容map的数据结构 }
set中的keys和values方法
letst=newSet(['xxx','yyyy','yyyy','John']); console.log(st.size);//3 letitKeys=st.keys(); for(letkofitKeys){ console.log(k);//依次输出xxxyyyyJohn } console.log('>>>>>'); letitVals=st.values(); for(letvofitVals){ console.log(v);//依次输出xxxyyyyJohn }
set的entries实体对象,是个键和值的数组结构
letst=newSet(['xxx','yyyy','yyyy','John']); letentriesIt=st.entries();// for(letvofentriesIt){ console.log(v);//依次输出["xxx","xxx"]["yyyy","yyyy"]["John","John"] }
关于NaN在set中的特殊性
letst=newSet(); console.log(NaN===NaN);//false,此处NaN是不全等的,理应可以添加多个,不算重复,但是这里是个特例 st.add(NaN).add(NaN).add(NaN); for(letvofst){ console.log(v);//只输出一个NaN }
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。