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程序设计有所帮助。