法一(数组使用splice方法)
var arr=[1,2,3,4,1,2,3,2,1,1,3,7,7,2,1,6,1,2,4,5,1,2,3];
//循环遍历数组
for(var i=0;i<arr.length;i++){
//定义变量获取当前元素
var item=arr[i];
//循环遍历i之后的元素
for(var j=i+1;j<arr.length;j++){
//判断i之后的元素是否有与当前元素相等的
if(item===arr[j]){
//如果有相等的,删除此元素
arr.splice(j,1);
//元素删除之后,数组长度改变,当前下标j元素会被后面的元素覆盖,为防止遗漏元素,需要下次循环依然从此下标开始,所以需要j--.
j--;
}
}
}
console.log(arr);
法二(将去重结果赋值给新数组)
var arr=[1,2,3,4,1,2,3,2,1,1,3,7,7,2,1,6,1,2,4,5,1,2,3];
var arr1=[];
//循环遍历原数组
for(var i=0;i<arr.length;i++){
//获取当前元素
var item=arr[i];
//定义布尔类型变量并初始值为真
var bool=true;
//循环遍历新数组
for(var j=0;j<arr1.length;j++){
//如果新数组中已经有此元素,则bool为假并跳出
if(arr1[j]===item){
bool=false;
break;
}
}
//如果最后bool仍然为真,说明新数组中无此元素,执行插入操作
if(bool){
arr1.push(item);
}
}
console.log(arr1);
法三 (原理与法二类似,但使用indexOf方法更简化)
var arr=[1,3,1,2,3,5,2,3,4,6];
var arr1=[];
//循环遍历原数组
for(var i=0;i<arr.length;i++){
//在新数组中查找当前元素,如果查询不到(indexOf返回值为-1),则执行插入操作
if(arr1.indexOf(arr[i])===-1){
arr1.push(arr[i]);
}
}
console.log(arr1);
var arr=[1,3,1,2,3,5,2,3,4,6];
var arr1=[];
//循环遍历原数组
for(var i=0;i<arr.length;i++){
//在新数组中查找当前元素,如果查询不到(indexOf返回值为-1),则执行插入操作
if(arr1.indexOf(arr[i])===-1){
arr1.push(arr[i]);
}
}
console.log(arr1);