一、indexOf()
var arr = [1,2,2,3,5,3,1,5,4,3,4,5,6];
//定义一个新数组
var arr2 = setNewArr(arr);
console.log(arr2);
//执行去除重复数据的数组
function setNewArr(arr){
//定义一个新数组
var newArr = [];
//执行循环
arr.forEach(function(v){
//执行判断字符出现位置
if(newArr.indexOf(v) == -1){
//如果newArr中没有该数据,就写入数据到newArr中
newArr.push(v);
}
})
return newArr;
}
注:forEach不能用于对象
二、双重for循环
var arr123 = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5];
//封装一个循环判断函数
function setNewArr2(arr){
//外层循环,从第一个开始,循环至最后
for(var i = 0; i <= arr.length-1;i++){
//内层循环,从循环次数的第二个开始,循环至最后
for(var j = i+1 ; j <= arr.length-1 ; j++){
//判断第一个和第二个是不是全等,如果是,则将第二个删除,同时j向前移动一位
if(arr[i] === arr[j]){
arr.splice(j,1);
j--;
}
}
}
return arr;
}
//引用变量执行函数
var newArr = setNewArr2(arr123);
console.log(newArr);
注:
循环操作数组,只要执行了删除数组单元的操作
一定要将循环变量数值执行 – (自身减减)操作
三、先排序,后去重
概念:先将数组中的数值,排列顺序,后比较删重复值
var arr = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5];
//定义一个新数组
var newArr =setNewArr3(arr);
console.log(newArr);
//封装一个函数
function setNewArr3(arr){
//先对数组进行排序操作,相同数据,相邻
var newArr = arr.sort(function(a,b){return a-b});
console.log(newArr);
//相邻数组进行比对
for(var i = 0;i <= arr.length - 1;i++){
//如果相邻数组相同,则删除后面的数据,同时与下一个补位数据进行对比
if(newArr[i] === newArr[i+1]){
newArr.splice(i+1, 1)
i--;
}
}
return newArr;
}
注:
先将数组中的数值,按照大小顺序,排列
排序之后,相同的数值,一定是相邻的
此时,只要相邻的两个数值比较,如果相同,删除后一个数据,再执行 i–
使用一层循环就可以了
循环次数就比较少