数组去重的方式有哪些?
双重for()循环
var arr = [1, 2, 3, 4, 5, 6, 4, 3, 8, 1] // 数组去重: // 方法1: 双重for 循环 function newArrFn(arr) { // 创建一个新的空数组 let newArr = [] for (let i = 0; i < arr.length; i++) { // 设置一个开关,如果是true,就存进去,不是就不存 let flag = true for (let j = 0; j < newArr.length; j++) { // 原数组和新数组作比较,如果一致,开关变为 false arr[i] === newArr[j] ? flag = false : flag }; flag ? newArr.push(arr[i]) : newArr }; return newArr } console.log(newArrFn(arr));// [1, 2, 3, 4, 5, 6, 8]
for()循环+indexof()
indexof()特性就是查找数组中是否有相同元素,如果有就返回其索引(及下标),如果没有就返回-1
var arr = [1, 2, 3, 4, 5, 6, 4, 3, 8, 1] // 数组去重: // 方法2: for + indexof function newArrFn(arr) { let newArr = [] for (let i = 0; i < arr.length; i++) { newArr.indexOf(arr[i]) === -1 ? newArr.push(arr[i]) : newArr }; return newArr } console.log(newArrFn(arr));//[1, 2, 3, 4, 5, 6, 8]
for()+sort()
先将原数组sort()排序,然后for()循环比较相邻数组,如果不同就push
var arr = [1, 2, 3,4 ,5,6, 4, 3, 8, 1] // 数组去重: // 方法3: for + sort function newArrFn (arr) { arr = arr.sort() let newArr = [] for(let i = 0;i<arr.length;i++){ arr[i] === arr[i-1] ? newArr : newArr.push(arr[i]) }; return newArr } console.log(newArrFn(arr)); //[1, 2, 3, 4, 5, 6, 8]
Set()
ES6新增的数据类型Set的特点就是数据不重复,Set()函数可接收一个数组(或类数组对象)进行初始化,以此也可实现数组去重
var arr = [1, 2, 3, 4, 5, 6, 4, 3, 8, 1] // 数组去重: // 方法4: set function newArrFn(arr) { // .new Set方法,返回是一个类数组,需要结合 ...运算符,转成真实数组 return ([...new Set(arr)]) } console.log(newArrFn(arr)); //[1, 2, 3, 4, 5, 6, 8]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用