前端八种去重方法
<script> // 第一种 ES6 new Set let arr = [1, 2, 3, 2, 1, 4, 5, 4] const result = Array.from(new Set(arr)); const result1 = [...new Set(arr)]; console.log(result); console.log(result1); // 第二种 双重for循环与splice function uniqueFun2(arr) { let len = arr.length; for (let i = 0; i < len; i++) { for (let j = i + 1; j < len; j++) { if (arr[i] === arr[j]) { arr.splice(j, 1); len--; j++; } } } return arr; } console.log(uniqueFun2(arr)); // 第三种 indexOf function uniqueFun3(arr) { const newarr = []; arr.forEach(item => { // 等于-1 表示不存在 if (newarr.indexOf(item) === -1) { newarr.push(item); } }) return newarr; } console.log(uniqueFun3(arr)); // 第四种 includes function uniqueFun4(arr) { const newArr = []; arr.forEach(item => { if (!newArr.includes(item)) { newArr.push(item); } }); return newArr; } console.log(uniqueFun4(arr)); //第五种 filter()+indexOf() function uniqueFun5(arr) { return arr.filter(function(item, index) { return arr.indexOf(item) == index; }) } console.log(uniqueFun5(arr)); //第六种 Map() 数据结构 function uniqueFun6(arr) { const map = new Map(); const newArr = []; arr.forEach(item => { if (!map.has(item)) { map.set(item, true); newArr.push(item) } }); return newArr; } console.log(uniqueFun6(arr)); //第七种 对象属性特征(不推荐) function uniqueFun7(arr) { const newArr = []; const obj = {}; arr.forEach(item => { if (!obj[item]) { newArr.push(item); obj[item] = true; } }); return newArr; } console.log(uniqueFun7(arr)); //第八种 reduce与includes方法 function uniqueFun8(arr) { return arr.reduce( (prev, cur) => (prev.includes(cur) ? prev : [...prev, cur]), [] ) } console.log(uniqueFun8(arr));
</script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2022-02-11 jQuery样式操作