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

前端面试手写代码——JS数组去重

时间:2023-03-27 15:46:31 JavaScript

1testcase//testcaseconsta={};常量b={c:1};常量数组=[1,1,"1","1",{},{},{c:1},{c:1},a,a,b,b,[],[],[1],[1],undefined,undefined,null,null,NaN,NaN,];2JS数组去重4大类型2.1元素比较类型该类型通过比较数组元素进行去重2.1.1双层for循环逐一比较(es5常用)使用双层for循环逐个比较数组元素,使用splice方法去除重复元素//双层for循环函数uniq1(arr){for(leti=0;iitem===arr[i])){res.push(arr[i])}}returnres}//去重结果//[1,'1',{},{},{c:1},{c:1},{},{c:1},[],[],[1],[1],undefined,null,NaN,NaN]同理,还是用这里使用===比较元素,因为NaN===NaN为false,所以新数组中会有多个NaN2.4依赖于数据结构的特性,该类型利用了数据不可重复的特性ES6提供的结构Map和Set去重2.4.1MapES6提供的Map结构可以使用各种类型的值(包括对象)作为键,键是唯一的functionuniq8(arr){constmap=newMap()for(leti=0;i