1.
// 数组去重 // 检查是否有重复数据,有,删除,没有,过 function norepeat(arr){ // 先准备空数组 var sArr = []; // 拿到大数组中所有数据 for(var i=0;i<arr.length;i++){ // 依次检测原来的空数组中是否包含大数组的数据,不包含,就放进去 if(!has(sArr,arr[i])){ sArr.push(arr[i]) } } return sArr; } var a = norepeat([1,2,3,4,4,4,5,6,7,6,5,4,3,2,1,1,1,1]) console.log(a) // 检测数组中数据的功能 function has(arr,n){ for(var i=0;i<arr.length;i++){ if(arr[i] === n){ return true; } } return false; }
2. for of + includes
var arr =[1,2,3,3,21,4,4,6] var arr1 = []; for(let i of arr){ !arr1.includes(i)&& arr1.push(i) } console.log(arr1);
3. fillter + indexOf
var arr = [1, 2, 3, 3, 21, 4, 4, 6] var arr1= arr.filter(function(item,index){ return arr.indexOf(item) === index; }) console.log(arr1)
4. new Set()
var arr =[1,1,2,2,3,3,4,4,5,5]; var myset = new Set(arr); console.log(myset) var newArr =[]; for(var i of myset){ newArr.push(i) } console.log(newArr);
5.双层for循环加splice
function unique(arr) { for (var i = 0; i < arr.length; i++) { for (var j = i + 1; j < arr.length; j++) { if (arr[i] == arr[j]) { //第一个等同于第二个,splice方法删除第二个 arr.splice(j, 1); j--; } } } return arr; }
6.利用sort()方法
function unique(arr) { if (!Array.isArray(arr)) { console.log('type error!') return; } arr = arr.sort() var arrry = [arr[0]]; for (var i = 1; i < arr.length; i++) { if (arr[i] !== arr[i - 1]) { arrry.push(arr[i]); } } return arrry; }