转载自:https://blog.csdn.net/jiangwei1994/article/details/82992985
一、for循环嵌套,利用splice去重
function newArr(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;
}
var arr = [1,1,2,5,6,3,5,5,6,8,9,8];
console.log(newArr(arr))
二、建新数组,利用indexOf去重
function newArr(array){
//一个新的数组
var arrs = [];
//遍历当前数组
for(var i = 0; i < array.length; i++){
//如果临时数组里没有当前数组的当前值,则把当前值push到新数组里面
if (arrs.indexOf(array[i]) == -1){
arrs.push(array[i])
};
}
return arrs;
}
var arr = [1,1,2,5,5,6,8,9,8];
console.log(newArr(arr))
三、ES6中利用Set去重
function newArr(arr){
return Array.from(new Set(arr))
}
var arr = [1,1,2,9,6,9,6,3,1,4,5];
console.log(newArr(arr))
四、Object键值对去重
var arr = [1,2,3,2,3,4,5,6,7,8,9,8,5];
//将数组转换成对象
//利用对象的key值不能重复这一特性
var toObject = function(array) {
var obj = {};
for(var i=0,j=array.length;i<j;i++){
obj[array[i]] = true;
}
return obj;
}
//再将对象转换成数组
var toArray = function(obj){
var arr = [];
for(var i in obj){
arr.push(i);
}
return arr;
}
//综合前两者,完成去数组重复项方法
var uiq = function(arr){
return toArray(toObject(arr));
}
var arr1 = uiq(arr);
console.log(arr1);