对于前端的开发人员来说,数据与数组的使用已经成为日常工作的一部分。而对于大量的数组重复问题,我们需要对数组进行去重。具有函数优先的轻量级解释性语言js也会面临着数组重复的情况。本文小编整理总结了js数组去重的三种方法:1、双层for循环嵌套,使用splice去重;2、建新数组,使用indexOf去重;3、ES6中使用Set去重。
方法一:双层for循环嵌套,使用splice去重
优点:兼容性好
function uniqueArr(arr){ if(!Array.isArray(arr)){ alert("type error"); return; } for(let i=0;i<arr.length;i++){ for(let j=i+1;j<arr.length;j++){ if(arr[i] === arr[j]){ arr.splice(j,1); j--; } } } return arr; }
方法二:建新数组,使用indexOf去重
优点:简化一层循环
function unique(arr){ var res = []; for (var i = 0, len = arr.length; i < len; i++) { var cur = arr[i]; if(res.indexOf(cur) === -1) { // res中不包含cur res.push(cur); } } return res; }
方法三:ES6中使用Set去重
Set函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化。
优点:成员的值都是唯一的,没有重复的值。
function uniqueArr(arr){ if(!Array.isArray(arr)){ alert("type error"); return; } return [...new Set(arr)]; }