第一种:indexOf (获取字符串值在字符串中首次出现的位置,若没有这个值,则返回-1)
let arr = [15,45,88,45,78,15,55,88];
let arr1 = []; //声明新数组
for(let i in arr){ //for...in 遍历数组
if(arr1.indexOf(arr[i]) == -1){ 使用indexOf 判断arr1和arr 里面是否有相同的,没有就添加,有就不添加;
arr1.push(arr[i]);
}
}
console.log(arr1);
第二种:双for循环 (每一个数据进行判断)
let arr = [15, 45, 88, 45, 78, 15, 55, 88];
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) { //判断是否遇到相同的元素
arr.splice(j, 1);//遇到就删除一个元素
j--; //数组的总长度发生了改变,进行j--
}
}
}
console.log(arr);
第三种:filter
let arr = [15, 45, 88, 45, 78, 15, 55, 88];
function fn(arr){
return arr.filter((item,index,arr)=>{
return arr.indexOf(item,0) === index; //当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
});
}
console.log(fn(arr));
第四种:Set (ES6)
let arr = [15, 45, 88, 45, 78, 15, 55, 88];
let s = new Set(arr) //实现数组去重,但不是数组类型
arr = [...new Set(arr)]; //转为arrAry类型
console.log(arr);
第五种:[...new Set(arrAry)] (ES6)
let arr = [15, 45, 88, 45, 78, 15, 55, 88];
arr = [...new Set(arr)];
console.log(arr);