2020年1月22日

常用—将数组的重复元素去掉,并返回新的数组

作者 admin

var arr = [1,1,1,2,3,4,1,3,6,7,3,5];//声明一个含有重复值得数组
function unique(arr){//创建unique函数
for(var i = 0;i < arr.length;i++){//遍历数组
for(var j = i + 1;j < arr.length;j++){//i分别于i+1和后面的依次进行比较
if(arr[i]==arr[j]){//如果相等,删除j中的那个值
arr.splice(j,1);
j–;//防止第三个及以后的重复的忽略而没有进行比较
}
}
}
return arr;
}

//方法二:数组排序去重

var arr = [1,1,1,2,3,4,1,3,6,7,3,5];
arr.sort();
for(var i = 0;i < arr.length-1;i++){
if(arr[i]==arr[i+1]){
arr.splice(i+1,1);
i–;
}
}
console.log(arr);

//借助对象来实现
//思路:可以把数组的元素当成对象的属性,如果没有则显示undefined

//方法三:把数组看成一个对象去重

var arr = [1,1,1,2,3,4,1,3,6,7,3,5];
function unique(arr){
var obj = {};//声明一个空对象
var newArr = [];//声明一个空数组,用来存放数组中去重后的值
for(var i = 0;i < arr.length;i++){//遍历数组
if(obj[arr[i]] == undefined){//如果对象中没有这个元素
newArr.push(arr[i]);//空数组中加入这个元素
obj[arr[i]] = 1;//对象这个元素赋值
}
}
return newArr;//返回新数组的值
}
console.log(unique(arr));

//方法四:indexOf属性来判断

var arr = [1,1,1,2,3,4,1,3,6,7,3,5];
var newArr = [];//声明一个空数组
function unique(arr){
for(var i = 0;i < arr.length;i++){//遍历数组
if(newArr.indexOf(arr[i])==-1){//用indexOf判断,没有就加入arr[i]的值
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(unique(arr));