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

ES6Set

时间:2023-03-28 15:35:06 HTML

数组去重详解letarr=[1,2,3,4,5,3,2]//数组去重//方法一letnewArr=[newSet(arr)]console.log(新编排);//方法2letnewArr2=Array.from(newSet(arr))console.log(newArr2);数组对象去重letobj=[{id:1,name:'zs'},{id:2,name:'ls'},{id:3,name:'ww'},{id:2,name:'ls'}]//数组对象去重letnewObj=[...newSet(obj.map(el=>JSON.stringify(el))).map(res=>JSON.parse(res))console.日志(新对象);//拆解步骤:/*1.判断两个基本数据类型是否相同,比较数据的值。判断两个引用类型是否相同,比较的是引用2。set不能对数组对象进行去重。set去重的原理主要是判断两者的存储单元位置是否相同,只有相同才能去重。3、数据的基本类型存放在栈中,如果值相同则直接去重。引用数据类型存储在堆上,引用类型数据同值不同位置,不能去重。参考第一篇的解释。4.只要将引用类型数据转换成基本数据类型,就可以直接比较基本数据类型,去除重复。去重完成后,将字符串转为json对象。*//*[...newSet(obj.map(el=>JSON.stringify(el)))]这一步map将里面的每一项都转成字符串,返回一个新的数组,就是referencetypedata转换基本类型数据,下面是转换结果[0:"{\"id\":1,\"name\":\"zs\"}"//String1:"{\"id\":2,\"name\":\"ls\"}"//string].map(res=>JSON.parse(res))这一步将去重后的值转换为对象得到最终结果*/数组添加letarr3=[{id:1,name:'zs'},{id:2,name:'ls'},{id:3,name:'ww'}]letnewArr3=newSet(arr3)//尾部添加newArr3.add({id:4,name:'swk'})console.log('尾部添加');控制台日志(newArr3);数组删除letarr4=[1,2,3,4,5,4,4,4]letnewArr4=newSet(arr4)newArr4.delete(2)//删除成功return:true删除失败return:falseconsole.log('删除数组中的一项');安慰。日志(newArr4);检查数组值是否存在letarr5=[1,2,3,4,5,6,7]letnewArr5=newSet(arr5)console.log('检查数组中是否存在设置值');控制台日志(newArr5.has(5));//存在则返回true,不存在则返回false清空数组中的所有值letarr6=[1,2,3,4,5]letnweArr6=newSet(arr6)nweArr6.clear()//清空数组中所有值,无返回值console.log('清空数组中所有值');控制台日志(nweArr6);arraylengthletarr7=[1,2,3,4,5]letnewArr7=newSet(arr7)console.log('获取数组的长度&size从1开始');控制台日志(newArr7.size);数组遍历方法//这些和es6遍历方法一致Set.prototype.keys()//——返回键名的遍历器Set.prototype.values()//——返回键值Set的遍历器.prototype.entries()//——返回键值对的遍历器Set.prototype.forEach()//——使用回调函数遍历元素//由于Set结构没有键名,只有键值(或者键名和键值是同一个值),//所以keys方法和values方法的行为是完全一样的