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

js数组去重方法总结

时间:2023-04-05 18:15:07 HTML5

假设我们有一个数组arr,声明一个新的数组hash来存放去重的元素:vararr=[23,44,5,2,23,5,1,7,8,7];//包含重复的元素varhash=[];//声明一个新数组以下是数组去重的几种常用方法1.使用indexOf遍历数组。思路:如果新数组中item的下标为-1,则表示在新数组中没有找到该item,可以将item放入新数组中。arr.forEach(item=>{if(hash.indexOf(item)=='-1'){hash.push(item);}})console.log(hash);//[23,44,5,2,1,7,8]2.遍历数组使用indexOf去重:如果该项的下标与数组中该项的下标相同,则放入一个新数组。如果没有,过滤掉。注意:【indexOf()方法可以返回指定字符串在字符串中第一次出现的位置】例如:console.log(arr.indexOf(23));//0'23'最先出现的位置在数组的第一个,即下标为0arr.forEach((item,index)=>{if(arr.indexOf(item)==index){hash.push(item);}})3.遍历数组使用标识去重varobj={};//声明一个变量标识符arr.forEach(item=>{if(!obj[item]){obj[item]=true;hash.push(item)}})4.排序后遍历过滤数组的思路是:先对数组进行排序,让相同的项总是相邻的。然后遍历这个数组和之前的比较,不相等就放入新的数组中。(仅用于排序)varhash=[arr[0]];arr.forEach((item,index)=>{if(item!=hash[hash.length-1]){hash.push(item)}})5.ES6实现思路:ES6提供了一种新的数组结构Set。类似于数组,但是成员的值是唯一的。使用展开运算符[...]结合Set结构可以去除数组中的重复元素。注意:[...]传播运算符在内部使用for..of循环。Set函数接收一个数组(或类数组对象)作为初始化参数。varhash=newSet(arr);varnewArr=[...哈希];控制台日志(newArr);//[23,44,5,2,1,7,8]orvarnewArr=Array.from(hash);【Array.from的作用是将类数组对象和可迭代对象转化为数组】