方法一:
先使用数组中的sort方法,将数组进行重排,按照从小到大的顺序;然后再使用for循环遍历,判断某一项和它相邻的项是否相等,若相等,则使用splice删除方法删除其中一个,已达到去重的目的,但是当我们删除掉一个元素的时候,后面的项就会自动补位到,所以要i–一下。
var arr = [1, 4, 5, 6, 3, 1, 5, 4, 10, 9, 10];
function quchong(ar) {
var ar = [1, 4, 5, 6, 3, 1, 5, 4, 10, 9, 10];
ar.sort(function (a, b) {
return a - b;
});
for (var i = 0; i < ar.length; i++) {
if (ar[i] === ar[i + 1]) {
ar.splice(i, 1);
i--;
}
}
return ar;
}
console.log(quchong(arr));
方法二:
首先新建一个空数组,然后利用for循环遍历,使用indexof方法(一般接受一个参数,也就是接受要查找的值,然后返回这个值在数组中的位置;如果没有查找的,就会返回-1)查找新数组中有没有和旧数组中相同的数字,如果没有,就把这个数字push到新数组中
var arr = [1, 4, 5, 6, 3, 1, 5, 4, 10, 9, 10];
function quchong(ar){
var array=[];
for(var i in ar){
if(array.indexOf(ar[i])===-1){
array.push(ar[i]);
}
}
return array;
}
console.log(quchong(arr));
方法三:
循环嵌套,让两次循环中的项相互比较,相同就删除
var arr = [1, 4, 5, 6, 3, 1, 5, 4, 10, 9, 10];
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]===arr[j]){
arr.splice(j,1);
j--;
}
}
}
console.log(arr);
方法四:
利用对象里面不重名的特性,对象的存储是键值对的方式
var arr = [1, 4, 5, 6, 3, 1, 5, 4, 10, 9, 10];
var obj={};
for(var i=0;i<arr.length;i++){
var a=arr[i];
if(obj[a]){//如果为true,则说明对象中存在这个属性,也就是说这个值重复了。
arr.splice(i,1);
i--;
}else{
obj[a]=a;
}
}
console.log(arr);
方法五
使用es6中的set方法(类似于数组,但是成员的 值都是唯一的,没用重复的值。Set本身是一个构造函数,用来生成Set数据结构)
var arr = [1, 4, 5, 6, 3, 1, 5, 4, 10, 9, 10];
var ar=new Set(arr);
console.log([...ar]);
参考链接:https://blog.youkuaiyun.com/icessunt/article/details/69098474