//双循环去重
function fn(arr){
if(Array.isArray(arr)){
//声明一个新的数组,然后把要遍历的数组的第一个元素放入这个新数组
var newArr = [arr[0]];
//然后从第二个元素开始遍历老的数组,同时遍历新数组
//把老数组和新数组的已有元素做对比,如果不相等,就放入新数组。
for(let i=1;i<arr.length;i++){
let flag = true;
for(let j=0;j<newArr.length;j++){
if(arr[i] === newArr[j]){
flag = false;
break;
}
}
if(flag){
newArr.push(arr[i])
}
}
}
return newArr
}
var arr = [1,1,2,2,3,4,5,5];
var arr2 = fn(arr);
console.log(arr2) [1, 2, 3, 4, 5]
//indexOf去重
//两个关键点 1、声明新数组 2、判断老数组里的元素是否在新数组里,没有就push进新数组
function fn(arr){
if(!Array.isArray(arr)){
console.log('type error');
return
}
var newArr = [];
for(let i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i]) == -1){
newArr.push(arr[i])
}
}
return newArr;
}
var arr = [1,1,2,2,3,4,5,5];
var arr2 = fn(arr);
console.log(arr2) [1, 2, 3, 4, 5]
//set 去重
//ES6?新增了一个数据类型 set,set的一个最大的特点就是数据不重复。
//Set()函数可以接收一个数组(或者类数组对象)作为参数来初始化。
function fn(arr){
if(!Array.isArray(arr)){
console.log('type error');
return;
}
return [...new Set(arr)]
}
var arr = [1,1,2,2,3,4,5,5];
var arr2 = fn(arr);
console.log(arr2) [1, 2, 3, 4, 5]