//第一种方法:双层循环,外层循环元素,内层循环时比较值,如果有相同的值则跳过,不相同则push进数组;
function distinct(arr){
var res = [];
for(var i=0; i < arr.length;i++){
for(var j= i+1;j< arr.length;j++ ){
if(arr[i] === arr[j]){
j = ++i;
}
}
res.push(arr[i]);
}
return res;
}
var arr = [1,2,3,4,4,1,1,2,1,1,1];
var result=distinct(arr);
console.log(result);
//第二种方法:利用ES6的set
Set数据结构,它类似于数组,其成员的值都是唯一的。
利用Array.from将Set结构转换成数组
function distinct(arr){
return Array.from(new Set(arr));//把set结构转为数组,用Array.from转换
}
var arr = [1,2,3,4,4,1,1,2,1,1,1]
var res = distinct(arr);
console.log(res);
第三种方法:使用indexOf 如果第一次出现的下标不存在,就push进入到新数组
var arr = [1,2,4,5,2,2,1,4];
//数组去重的方法 简单的实现
function unique(array){
//建一个新的空数组
var newArr = [];
//遍历当前的数组
for(var i=0;i<array.length;i++){
//如果第一次出现的下标不存在,就push进入到新数组
if(newArr.indexOf(array[i])==-1)newArr.push(array[i]);
}
return newArr;
}
var newArr = unique(arr);
console.log(newArr)
第四种方法:如果当前数组第i项第一次出现的位置不是i,那么代表重复,否则push进newArr数组里面
var arr = [1,2,4,5,2,2,1,4];
function unique2(array){
//结果数组
var newArr = [array[0]];
//遍历当前的数组
for(var i=1;i<array.length;i++){
//如果当前数组第i项第一次出现的位置不是i,那么代表重复,否则push进newArr数组里面
if(array.indexOf(array[i])==i)newArr.push(array[i]);
}
return newArr;
}
var newArr = unique2(arr);
console.log(newArr)
第五种:如果数组的第i项不等于结果数组第i项 那么代表第一次出现 push进数组
function unique3(array){
//数组排序
array.sort();
//结果数组
var newArr = [array[0]];
//遍历当前的数组
for(var i=1;i<array.length;i++){
//如果数组的第i项不等于结果数组第i项 那么代表第一次出现 push进数组
if(array[i]!== newArr[newArr.length - 1])newArr.push(array[i]);
//console.log(newArr[newArr.length - 1])
}
return newArr;
}
var newArr = unique3(arr);
console.log(newArr)
js五种简单的数组去重方法
最新推荐文章于 2024-02-22 14:46:05 发布