方法1:
var fruits = ['Apple',"Banana", "Orange", "Apple", "Mango",'Apple',"Orange",'Apple','Apple'];
function fun () {
var arr = [];
for (var i = 0; i < fruits.length; i++) {
if (arr.indexOf(fruits[i]) === -1) {
arr.push(fruits[i]) // 利用pop把元素添加到新数组
}
}
return arr
}
console.log(fun(fruits));
// indexOf(参数)功能:从数组的开头开始检测元素(参数)在数组中的位置并返回
// 索引号(数组下标),若数组没有该元素,则返回-1
方法2:
var arr=[1,2,3,3,2,5,8,3,5,2,9];
function unique(arr){
let newArr=[];
for(let i=0;i<arr.length;i++){
if(newArr.lastIndexOf(arr[i])===-1){
newArr.push(arr[i])
}
}
return newArr
}
console.log(unique(arr)); // [1,2,3,5,8,9]
// lastIndexOf(参数) 功能:从数组的末尾开始检测元素(参数)在数组中的位置并返回
// 索引号(数组下标),若数组没有该元素,则返回-1
方法3:
// includes
// 参数:想要查找的数组元素 返回值:false/true
var arr=[1,2,3,3,2,5,8,3,5,2,9];
function unique(arr){
let newArr=[];
for(let i=0;i<arr.length;i++){
if(!newArr.includes(arr[i])){
newArr.push(arr[i])
}
}
return newArr
}
console.log(unique(arr));
方法4:
var arr=[1,2,3,3,2,5,8,3,5,2,9];
function unique(arr){
let newArr=[];
arr.forEach(function(item){ // item 数组里面的元素
if(newArr.indexOf(item)===-1){
newArr.push(item)
}
})
return newArr;
}
console.log(unique(arr));
// forEach() 用于调用数组的每个元素 在这里相对于for循环的作用
方法5:
var arr=[1,2,3,3,2,5,8,3,5,2,9];
// 1.双层for循环
function unique(arr){
// 第一层for循环控制第一个数
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--;
}
}
}
}
unique(arr);
console.log(arr);
方法6:
var arr=[1,2,3,3,2,5,8,3,5,2,9];
function unique(arr){
let newArr=[];
return arr.filter(function(item){
return newArr.includes(item)?"":newArr.push(item) // 三目运算符判断
})
return newArr;
}
console.log(unique(arr));
// filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素
方法7:
// set去重 元素是唯一的
var arr=[1,2,3,3,2,5,8,3,5,2,9];
let set=new Set(arr);
// console.log(set); // 输出Set(6) {1,2,3,5,8,9} 是一个对象
// console.log(Array.from(set)); // 将对象转为数组
console.log([...set]); // 将对象转为数组